<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で質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript スマフォではボタンを表示させたくない 2 2023/01/20 14:26
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DOM要素を削除しても、イベント...
-
Latexに関する質問です。
-
VBAでIEのボタンを押してメッセ...
-
JavaScript window.openで開く...
-
javascriptの基本的なことだと...
-
Null またはオブジェクトではあ...
-
このjavascriptのif文、条件式...
-
LaTeX:数式を等号揃えにする方法
-
getパラメータ
-
responseTextについて
-
codejump 模写コーディングgall...
-
FireFoxのjavascriptで自動でキ...
-
文字を一文字ずつ表示
-
excle VBA とweb上の検索を利用...
-
同じIDで定義した要素の配列を...
-
idを使わずにonclickで自身の要...
-
Boolean型配列中のTrueの有無を...
-
jspからjavascriptの変数引継ぎ
-
関数でy=g(x)のgとは何の略です...
-
C#OpenCv V4にのエラーに関する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScript window.openで開く...
-
このjavascriptのif文、条件式...
-
FireFoxのjavascriptで自動でキ...
-
DOM要素を削除しても、イベント...
-
javascriptの基本的なことだと...
-
文字を一文字ずつ表示
-
showModalDialogで開いた画面を...
-
Null またはオブジェクトではあ...
-
Javascriptのhtml出力についてa...
-
codejump 模写コーディングgall...
-
LaTeX:数式を等号揃えにする方法
-
javascriptのdocument.allにつ...
-
excle VBA とweb上の検索を利用...
-
Latexに関する質問です。
-
乗換案内 VBAで操作したい
-
JavaScriptのdocument.all("変...
-
Javascriptで定期的にF5を押す...
-
選択によってsubmitボタンの色...
-
スマホでフォームにフォーカス...
-
compatModeとは?
おすすめ情報