iframeのコンテンツがオーバーフローしていて、スクロールバーが表示されているかどうかを確認する方法を知っている人はいませんか?iframeにスクロールバーが表示されているかどうかを確認しますか?
おかげ
iframeのコンテンツがオーバーフローしていて、スクロールバーが表示されているかどうかを確認する方法を知っている人はいませんか?iframeにスクロールバーが表示されているかどうかを確認しますか?
おかげ
あなたは、要素のscrollHeight
がclientHeight
よりも大きい場合、または要素のscrollWidth
がclientWidth
以上であるかどうかを確認したいです。これは、これらのプロパティを直接使用するか、jQueryによって提供されるヘルパーメソッドを使用して行うことができます。一般的には
If the element's content generated a vertical scrollbar, the scrollHeight value is equal to the minimum clientHeight the element would require in order to fit all the content in the viewpoint without using a vertical scrollbar. When an element's content does not generate a vertical scrollbar, then its scrollHeight property is equal to its clientHeight property. This can mean either the content is too short to require a scrollbar or that the the element has CSS style overflow value of visible (non-scrollable).
あなたは、要素のscrollHeight/scrollWidthとoffsetHeight/offsetWidthのデルタを比較する必要があります。 肯定的なら '勝者を得ました'。 しかし.. iframe内にスクロールバーを探している、物事は少しトリッキー取得:
var frm=document.getElementById("frm");
var iIsVrScrollBar = frm.contentWindow.document.documentElement.scrollHeight>frm.contentWindow.document.documentElement.offsetHeight ? 1 : 0;
var iIsHrScrollBar = frm.contentWindow.document.documentElement.scrollWidth>frm.contentWindow.document.documentElement.offsetWidth ? 1 : 0;
これは、iframe srcがそれをホストしているWebページと同じ起源から来た場合にのみ動作するということを付け加えるべきです。 "Uncaught SecurityError:原点" http:// ... "を持つフレームが、" https:// ..... "という原点を持つフレームにアクセスできないようにブロックされました。アクセスを要求するフレームは「http」のプロトコルを有し、アクセスされるフレームは「https」のプロトコルを有する。プロトコルは一致する必要があります。 – gae123
私はそれを動作させるためにコードを変更する必要がありました。
1)&内容は手順がTRUE
3に「sizewindow」を設定することによって扇動されているのと同じウェブサイト/フォルダ構造
2)上にあるIFRAME)それはスニペットは、タイマー機能セットの一部でありますIE11で試験anout 0.5秒
4)、FF34 & 35、40クロム31 &、&オペラ12.6
5)アクティブ℃でODEは
はhttp://www.users.waitrose.com/~cresby/map2.htm
if (sizewindow){
if(iIsVrScrollBar==1) {
frm.style.height = (frm.contentWindow.document.body.offsetHeight+20);
iIsVrScrollBar = (frm.scrollWidth!=frm.contentWindow.document.documentElement.scrollWidth) ? 1 : 0;
if(iIsVrScrollBar==0) sizewindow=false;
}else{
frm.style.height = (frm.contentWindow.document.body.offsetHeight-10);
iIsVrScrollBar = (frm.scrollWidth!=frm.contentWindow.document.documentElement.scrollWidth) ? 1 : 0;
if(iIsVrScrollBar==1) {frm.style.height = (frm.contentWindow.document.body.offsetHeight+10);}
}
}
が、この方法は、IFRAMEの内容は同じサーバー上でホストされている必要がありい参照するか、それがクロスドメインすることができ、内容よりも単に大きなにウィンドウのサイズ? – Olokoo
iframe要素があなたのドメインにあるからです。コンテンツは必ずしも必要ではありませんが、コンテンツはiframeのscrollWidthとscrollHeightを最終的に定義します。 – jimp
私はこれを試して、うまくいかなかった、私は両方のために同じ結果を得て、それは両方の要素の高さです。 \t \t function checkScroll(\t \t \t var intElemScrollHeight = document.getElementById( 'websiteView')。scrollHeight; \t \t \t var intElemClientHeight = document.getElementById( 'websiteView').clientHeight; \t \t \t alert(intElemScrollHeight); \t \t \t alert(intElemClientHeight); \t \t} – Olokoo