<script language="JavaScript">
<!--
function frame_check(){
if(main.document.body){
if(navigator.userAgent.indexOf("Opera") != -1){ // 文字列に「Opera」が含まれている場合
var f = main.document.body.scrollHeight;
}
else if(navigator.userAgent.indexOf("MSIE") != -1){ // 文字列に「MSIE」が含まれている場合
var f = main.document.body.scrollHeight;
}
else if(navigator.userAgent.indexOf("Firefox") != -1){ // 文字列に「Firefox」が含まれている場合
var f = main.document.body.offsetHeight;
}
else if(navigator.userAgent.indexOf("Netscape") != -1){ // 文字列に「Netscape」が含まれている場合
var f = main.document.body.offsetHeight;
}
else if(navigator.userAgent.indexOf("Safari") != -1){ // 文字列に「Safari」が含まれている場合
var f = main.documentElement.offsetHeight;
}
if(f)
document.getElementById("frame_set").height=f+20;
setTimeout("frame_check()",100);
}else{
setTimeout("frame_check()",100);
}
}
setTimeout("frame_check()",10);
--></script>
<iframe name="main" id="frame_set" src="mainf.html" width="800" height="4000" frameborder="0" scrolling="no"></iframe>
上記のスクリプトを作成しましたが、IE7、 Firefoxではうまくいきますが、SafariではIframeに表示するページの高さが取得できません。
どこが問題なのかご教授お願いいたします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
いろいろ、調べてみました。
http://d.hatena.ne.jp/onozaty/20060803/p1
http://dogmap.jp/2007/07/19/doctype-%E5%AE%A3%E8 …
結局、どのような動作をさせたいのかが分かりませんがもしかすると
フレームをフレーム内のサイズと同じにしてフレームと認識させない
ようにしたいということでしょうか。
そうなると、セキュリティやマナー上の問題が発生します。
ただ、上記のようにしたい場合は以下のようにしたらいいみたいです。
(なんか調べた結果と異なってなぜか標準モードでも互換モードでも
document.documentElement.clientHeightとdocument.body.clientHeightが
ブラウザによって取得される値が異なるもののどちらも使用できたり
しているみたいですが)
function frame_check() {
var elm = main.document;
var f = elm.documentElement.scrollHeight || elm.body.scrollHeight;
if(f) {
document.getElementById('frame_set').height = f + 20;
}
}
そして、 iframe に onload="frame_check();" をつけます。
あと、フレームのsrc属性が他のドメインだと正常に値が取得できない
ようです。
もし、勘違いがあったらすみません。
この回答への補足
ご回答ありがとうございます。
セキュリティやマナー上の問題とは、どのような問題ですか?すいません素人ですので、教えていただけますか。
ご支持の通り、変更しましたが、結果変わらずでした。
セキュリティやマナー上の問題が大きければ1から出直そうかなと思います。
よろしくお願いいたします。
No.2
- 回答日時:
変数定義はブロックの外でした方がいいような気が...。
(JavaScriptってどこで宣言しても関数内は有効だったんだっけ?)
ところで、ifの中で同じ記述を繰り返していますがこれだとifの意味が
ないような気がします。
function frame_check(){
if(main.document.body) {
var elm = main.document.getElementById('frame_set');
var f = elm.scrollHeight || elm.offsetHeight;
if(f) {
document.getElementById('frame_set').height = f + 20;
}
}
setTimeout("frame_check()",100);
}
setTimeout("frame_check()",10);
としたらどうでしょうか。
(試していないので動作するかどうかの保証はしません)
No.1
- 回答日時:
main.documentElement.offsetHeight の部分が取れないって
おっしゃっているんですよね?
main.documentElement.offsetHeightの箇所を単純に
「document.getElementById("frame_set").offsetHeight」
にしてあげれば、取得できます。
(Safariで検証しましたので自信はあります)
どうぞ、宜しくお願いします。
この回答への補足
早速のご回答ありがとうございます。
ご指示のとおり
else if(navigator.userAgent.indexOf("Safari") != -1){ // 文字列に「Safari」が含まれている場合
var f = main.documentElement.offsetHeight;
}
を
else if(navigator.userAgent.indexOf("Safari") != -1){ // 文字列に「Safari」が含まれている場合
var f = document.getElementById("frame_set").offsetHeight;
}
に変更しましたが WindowsXPのsafari(3.12)では高さが取得できずスクロールバーが勝手に可変します。
どこが悪いのでしょうか?何度もすみません。よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
form内のinputタグのみロックす...
-
javascriptの基本的なことだと...
-
Javascriptで定期的にF5を押す...
-
TexでΣの添え字の位置直し
-
VBAでIEのボタンを押してメッセ...
-
jspからjavascriptの変数引継ぎ
-
<a>タグのテキストを取得
-
二次元配列を使って順位をだす...
-
C#OpenCv V4にのエラーに関する...
-
onchangeイベントを使ってspan...
-
C#テキストボックスの文字を配...
-
ジェネレーターの作り方
-
イラレでナンバリングする方法
-
翌月を取得するGASが分かりません
-
なぜmatchメソッドがエラーにな...
-
functionから別のfunctionを実...
-
VSCODE[Python]の設定について
-
Linux バイナリ実行できない "...
-
クリックを押した時にリンク先...
-
同じIDで定義した要素の配列を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptの基本的なことだと...
-
Latexに関する質問です。
-
DOM要素を削除しても、イベント...
-
Null またはオブジェクトではあ...
-
JavaScript window.openで開く...
-
onload時にPostBackを発生させ...
-
XMLでのAttributeを持ったNode...
-
showModalDialogで開いた画面を...
-
FireFoxのjavascriptで自動でキ...
-
時間でlink, vlink, alinkの文...
-
TexでΣの添え字の位置直し
-
iframeのソースを取得したい
-
乗換案内 VBAで操作したい
-
デフォルトのリンクの色
-
webページ上のTabキーの動き
-
質問です! Operaって、document...
-
ラジオボタンをクリックしたい
-
クリッカブルマップのリンク部...
-
文字を一文字ずつ表示
-
ホームページで矢印に付いて来...
おすすめ情報