HTML iFrameで(Javascriptを使用して)スクロールバーの存在を検出するにはどうすればよいですか?
私はすでに試しました:
var vHeight = 0;
if (document.all) {
if (document.documentElement) {
vHeight = document.documentElement.clientHeight;
} else {
vHeight = document.body.clientHeight
}
} else {
vHeight = window.innerHeight;
}
if (document.body.offsetHeight > vHeight) {
//when theres a scrollbar
}else{
//when theres not a scrollbar
}
そして私も試しました:
this.scrollLeft=1;
if (this.scrollLeft>0) {
//when theres a scrollbar
this.scrollLeft=0;
}else{
//when theres not a scrollbar
return false;
}
成功しませんでした。
DOM Inspectorでjavascript objetsを検索しましたが、何も見つかりませんでした。
Javacscriptのiframeでスクロールバーの存在を検出することは可能ですか?
Iframeコンテンツは同じドメインからのものです。
今まで成功しませんでした。
JQueryを使用すると、ドキュメントの高さ、scrollTopの位置、およびビューポートの高さを比較できます。これにより、必要な答えが得られる可能性があります。
次のようなもの:
$(window).scroll(function(){
if(isMyStuffScrolling()){
//There is a scroll bar here!
}
});
function isMyStuffScrolling() {
var docHeight = $(document).height();
var scroll = $(window).height() + $(window).scrollTop();
return (docHeight == scroll);
}
var root= document.compatMode=='BackCompat'? document.body : document.documentElement;
var isVerticalScrollbar= root.scrollHeight>root.clientHeight;
var isHorizontalScrollbar= root.scrollWidth>root.clientWidth;
これは、スクロールバーにneedがあるかどうかを検出します。デフォルトのiframeの場合、これはスクロールバーがisあるかどうかと同じですが、スクロールバーが強制的にオンまたはオフになる場合( 'scrolling = "yesを使用)親ドキュメントの "/" no "'属性、またはCSS'オーバーフロー:iframeドキュメントのscroll/hidden ')の場合、これは異なる場合があります。
$(window).scroll(function(){
if(isMyStuffScrolling()){
//scrolling
}else{
//not scrolling
}
});
function isMyStuffScrolling() {
var docHeight = $(document).height();
var scroll = $(window).height() ;//+ $(window).scrollTop();
if(docHeight > scroll) return true;
else return false;
}
改善-JonのWinstanleyコードから少し変更
JavaScriptのセキュリティ制限のため、iframeコンテンツが別のドメインからのものである場合はこれを実行できないと思います。
編集:その場合、iframeにname = 'someframe'およびid = 'someframe2'を付けてから、frames ['someframe']。document.body.offsetWidthをdocument.getElementById( 'someframe2')と比較することに沿った何か.offsetWidthが答えを与えるはずです。
これは、少なくともChromeでは、どの要素でも機能することがわかりました。
hasVerticalScrollbar = (element.scrollHeight > element.offsetHeight)
||
(element.scrollHeight > element.clientHeight
水平スクロールバーは、Width
の代わりにHeight
を使用して同じように検出できます。
2回目の試みは正しい方向に進んでいると思います。 this
の代わりに、document.body
をスクロール/チェックしてみてください。