iframe代わりにobjectタブを使用しています。
読み込むページにあわせてjavascriptで高さを変更したいのですが
FireFoxと違ってOperaではどうもうまくいきません。
どのようにすればよいのでしょうか。どなたか回答お願いします。
ちなみに現在のソース(必要部分のみ)は以下のような感じです。
<object onload="load()" id="content" type="text/html" data="~"></object>
<script>
function load(){
document.getElementById("content").height=document.getElementById("content").contentDocument.body.offsetHeight+"px";
}
</script>
No.3ベストアンサー
- 回答日時:
小さくする方だったんですね。
再現できました^^;参考ソースでは大きくする方もできなかったので load()の名前変更で大きくできるので解決すると思い込んでしまってました。
で、ちょっといくつか試しましたが、
OperaはObjectタグのheightがそのままコンテンツのbodyのoffsetHeightになってしまうようです。(つけない場合は150pxがデフォ?)
Objectタグに height='0'をつければ 0って戻りますし。
SafariもOperaに似た動きしましたが 0pxに設定すると逆にほぼ正しいHeightを返してくれるようになりました。
でもOperaは駄目ですね。
なので、小手先の方法ですが
読み込ませる test2.htm のBODYの内側に<div id="body"></div>を囲んでしまい、
このDIVのoffsetHeightを求めれば、ほどほど正しい値が戻るようです。
読みこませるHTMLファイルが自分の物でこれがかのうなら、なんとか、、
<object onload="loads(this)" id="content" type="text/html" data="./test2.htm" ></object>
<script>
function loads(obj){
var Height = obj.contentDocument.getElementById('body').offsetHeight
alert(Height)
obj.height = Height + "px";
}
</script>
ただ、これだとOpera、Safariだとスクロールバーも出るので、
style指定にして縦も5pxくらい足すとOperaではスクロールバーも出なくなるみたいですね。
----------test1.htm----------
<html>
<body>
<object onload="loads(this)" id="content" type="text/html" data="./test2.htm" ></object>
<script>
function loads(obj){
var Height = obj.contentDocument.getElementById('body').offsetHeight
alert(Height) //確認
obj.style.height = Height + 5 + "px";
}
</script>
</body>
</html>
----------test2.htm----------
<html>
<body>
<div id="body">
test<br>
</div>
</body>
</html>
正しく高さを認識することができました!
僕の最初の質問文がわかりにくかったため、お手数をおかけしてしまいましたが
おかげで満足のいくページが構築できそうです。ありがとうございました!
No.2
- 回答日時:
<object onload="loads()" id="content" type="text/html" data=""></object>
<script>
function loads(){
document.getElementById("content").height=document.getElementById("content").contentDocument.body.offsetHeight+"px";
}
</script>
私の環境では、ソース部分の load() 2箇所を loads()にするだけでOperaもFireFoxと同じようにきちんと表示されるので、上手くいかない再現ができないのでちょっとわからないです。
この回答への補足
回答をコピペさせていただきましたが、やはり上手くいきません。
objectタグに読ませる内容をどのようにしてもoffsetHeightの値が「150」となります。
できる限り簡単にした以下の2つのファイルを同じフォルダに置きtest1.htmにアクセスすると
Firefoxでは「19」、Operaでは「150」とダイアログ表示されます。
ちなみにサーバーはApache2.2.4でOperaのバージョンは9.26です。
----------test1.htm----------
<html>
<body>
<object onload="loads()" id="content" type="text/html" data="./test2.htm"></object>
<script>
function loads(){
alert(document.getElementById("content").contentDocument.body.offsetHeight);
}
</script>
</body>
</html>
----------test2.htm----------
<html>
<body>
test<br>
</body>
</html>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 画像の表示位置 3 2022/12/23 08:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
キーを押している間の時間を計...
-
XMLHTTPRequestでstatusが0に
-
SCRIPT5007: 未定義または NULL...
-
Webサイトを表示時にタイトルの...
-
jQuery ツールチップの中のリンク
-
function の return 値を表示し...
-
idHOGEで取得したinnerText(数...
-
Javascript でText file の書き...
-
bodyタグのfocus
-
二つの関数を一つにまとめるこ...
-
フォーカス移動抑止について
-
ナンバーズ 4 の数列をランダム...
-
6で割り切れる数を表示するJava...
-
Google Maps APIについて質問です
-
リンク移動先のURLを取得
-
3の倍数の合計
-
乱数を一定時間毎に表示させた...
-
Operaでのobjectタブの高さ変更
-
iframeの中から親ページをスム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
getElementsByNameで要素が取得...
-
JavaScriptでiframeの内容を「...
-
キーを押している間の時間を計...
-
SCRIPT5007: 未定義または NULL...
-
JavaScript でキーを送る
-
フォーカス移動抑止について
-
リンク移動先のURLを取得
-
function の return 値を表示し...
-
初心者javascript ウィンドウサ...
-
ボタンのID名を取得するには?
-
フレームサイズの変更について
-
iframeの中から親ページをスム...
-
乱数を一定時間毎に表示させた...
-
ボタンを押してテキストエリア...
-
出荷予定日を表示するJavaスク...
-
ページ全体を検索して特定文字...
-
XMLHTTPRequestでstatusが0に
-
自動ジャンプでフォームデータ...
-
JavaScriptでの西暦下2桁での表...
-
idHOGEで取得したinnerText(数...
おすすめ情報