新・元地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記

自由な20代、窮屈な30代を経て、遂に40代になっちまったWebディレクター&パソコン講師の覚書と思う言(こと)。略称【ちほちゅう】

*

iframeの高さを内容に合わせて変えるスクリプト

   

  • このエントリーをはてなブックマークに追加

1年以上前の記事です。内容が古い可能性があります。

非推奨ながらもなかなかなくならないiframeタグですが、これは「いいね!」ボタン等の埋め込みタグや広告関係に未だに使われています。
実は僕も簡単な掲示板方式のCMSでiframeを使っているのですが、ここで一つ問題があります。
CMSっていうのは内容によってページのサイズが変わってくるわけです。
ページのサイズが変わるとiframeから内容がはみ出してしまいます。
これは、スクロールバーをつければ解決するのですがこれがイマイチスマートじゃない。
そこで、 iframeの高さを表示されるページの内容に合わせて変えるスクリプトを紹介します。

スポンサーリンク
 

ベースになるJavascriptは以下のとおり。

function GetHeight(ID,NAME)
{
if (document.height)
{
document.getElementById(ID).style.height = parent.frames[NAME].document.height +"px" ;
}
else
{
document.getElementById(ID).style.height = parent.frames[NAME].document.body.scrollHeight +"px";
}
}

簡単に解説すると if (document.height) の振り分けはブラウザ対策。
document.getElementById(ID).style.height がiframeのheight(高さ)の値になり、
それを parent.frames[NAME].document.height つまり読み込ませるドキュメントの高さに合わせる。
といったことをしています。 

こちらを、外部ファイルにして読み込むか直接scriptタグで書き込むかします。 

さて、それだけじゃもちろんダメでiframe側も以下のように書く必要があります。

<iframe onload="GetHeight(this.id,this.name)" src="./cgi-bin/news.cgi" id="news" name="news" width="420" height="100" frameborder="0"></iframe>

上記は一例です。
srcのところは任意。おそらくcgiやPHPスクリプトのことが多いと思います。
重要なのは onload=”GetHeight(this.id,this.name)”
idとnameを同一の文字列にするところ。

以上でOK。
そんなに使う機会ないかもしれませんが念のための覚書でした。

via : IFRAMEの高さ可変 (メモ帳)

 - プログラミング, ユーザビリティ

アドセンス広告メイン

Comment

  1. hashian より:

    ちほちゅう様
    はじめまして。
    javascript初心者です。
    このページを参考にさせていただき、iframeの高さを変えるのは出来たのですが、どうしてもFirefoxだけiframe内でアンカーにジャンプしません。IE,Opera, Safariはジャンプしました。(いずれも最新バージョン)
    他のスクリプトも色々試したのですが、やはりFirefoxだけダメでした。
    何か原因があるでしょうか?Firefoxの仕様なのでしょうか?
    参照URL
    http://tryinventor.main.jp/a.html
    こういう投稿は初めてで、教えて!gooなどで質問するべきなのかどうか迷いましたが、他のスクリプトと比べて一番シンプルでいいと思ったのでこの場で質問させていただきました。お忙しいとは思いますがよろしくお願いします。

  2. のりさ より:

    > hashianさん
    このあたり、参考になりませんでしょうか?
    http://q.hatena.ne.jp/1301966177

  3. hashian より:

    のりさ様
    Firefox 3.6では問題なく動作しました。
    Firefox 6.0ではダメだということですね。
    ありがとうございました。勉強になりました。

のりさ へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。

  関連記事

WordPress(ワードプレス)でトップページ以外にブログトップを設置する方法【完全版】 #wp

1年以上前の記事です。内容が古い可能性があります。つぶくまブログの「←古い投稿」 …

「Google Chrome」の画像検索がとてつもなく簡単になっていた

1年以上前の記事です。内容が古い可能性があります。これはいつからなのでしょうか? …

Googleクロムでページ内検索にちょっとしたうれしい機能

1年以上前の記事です。内容が古い可能性があります。Googleクロムでページ内検 …

「翻訳こんにゃく」の文字バージョン。スマホを通すと英語が日本語に

1年以上前の記事です。内容が古い可能性があります。ありそうでなかったこんなアプリ …

foursquare(フォースクエア)で写真添付、iPhoneアプリが対応

1年以上前の記事です。内容が古い可能性があります。待っていたこの機能!位置情報S …

カスタムフィールドとカスタム投稿で記事投稿フォームを使いやすく 3 – テンプレート編集の巻 【ワードプレス】 #wp

1年以上前の記事です。内容が古い可能性があります。1. Custom Field …

LINE(ライン)のおかげで解約されたケータイ番号がよく分かる

1年以上前の記事です。内容が古い可能性があります。LINE(ライン)には自分のス …

Facebook(フェイスブック)のタイムラインを始める方法

1年以上前の記事です。内容が古い可能性があります。放っておいても時期が来れば勝手 …

今度のIE(Internet Explorer)はFlashいらず、吉と出るか凶とでるか

1年以上前の記事です。内容が古い可能性があります。Microsoftの純正ブラウ …

no image
「フリック入力」とはどんな意味?

1年以上前の記事です。内容が古い可能性があります。以前「ダダ漏れ」を調べたときに …

血液型オヤジ