
<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を探す
今、見られている記事はコレ!
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaScript window.openで開く...
-
Latexに関する質問です。
-
ブックマークレットの() 背景...
-
投稿画像の確認画面
-
ラジオボタンでreadonlyの切替え
-
google apps scriptの終了のさせ方
-
$("body").height();と$("body"...
-
同じIDで定義した要素の配列を...
-
JavaScriptからPHPに配列を渡す...
-
C#で、ContextMenuStripに動的...
-
XMLHttpRequestでキャッシュを...
-
クリックすると上に開くアコー...
-
undefinedを表示させない方法は...
-
ボタンをクリックすると数が増...
-
Boolean型配列中のTrueの有無を...
-
C# 演算 奇数と偶数 表現の仕方
-
毎日日付の変わるタイミングを...
-
jsによって検索プルダウン、都...
-
onclickは良くないのですか
-
配列を作って総当たりで距離を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScript window.openで開く...
-
乗換案内 VBAで操作したい
-
onClickイベントの変更方法
-
TexでΣの添え字の位置直し
-
javascriptの基本的なことだと...
-
Latexに関する質問です。
-
サブウィンドウに背景色をつけ...
-
XMLでのAttributeを持ったNode...
-
excle VBA とweb上の検索を利用...
-
javascriptのdocument.allにつ...
-
スマホでフォームにフォーカス...
-
Null またはオブジェクトではあ...
-
ラジオボタンでreadonlyの切替え
-
文字がマウスカーソルを追従す...
-
LaTeX:数式を等号揃えにする方法
-
選択によってsubmitボタンの色...
-
UWSCでオンクリックのボタンを...
-
VBAのIE操作でframe構造のサイ...
-
DOM要素を削除しても、イベント...
-
webページ上のTabキーの動き
おすすめ情報