2009-03-25 18 views
21

HTML iFrame'de bir Kaydırma çubuğu varlığını (Javascript kullanarak) nasıl algılayabilirim?HTML iFrame'de bir Kaydırma çubuğu varlığını (Javascript kullanarak) nasıl algılayabilirim?

Zaten denedim :

 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 
    } 

Ve ayrıca denemişti: hayır başarı ile

  this.scrollLeft=1; 
    if (this.scrollLeft>0) { 
     //when theres a scrollbar 
     this.scrollLeft=0; 
     }else{ 
     //when theres not a scrollbar 
     return false; 
    } 

..

Ben javascript objeleri aradık DOM Inspec adresinde daha fazla bilgi alabilirsiniz. numaralı telefonu arayın, ancak hiçbir şey bulamadınız.

Bir javacscript dosyasında bir iframe'de kaydırma çubuğu varlığı tespit etmek mümkün mü?


iframe içeriği aynı etki alanından gelir.

şu ana kadar hiçbir başarı ..

alt text http://www.upvtp.com.br/file.php/1/help_key.jpg

cevap

10

size ihtiyacınız cevaplar alabilirsin belge yüksekliğini, scrollTop pozisyon ve görünüm alanı yüksekliği karşılaştırabilirsiniz jQuery kullanma. çizgisinde

şey: iframe içeriği nedeniyle JavaScript güvenlik sınırlamaları nedeniyle başka bir alandan gelirse

$(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); 
} 
+0

Cevabınız için teşekkür ederiz, ancak kodunuz yalnızca kaydırma çubuğunu hareket ettirmeye çalıştığımda sınar. Sayfa yüklemesinde test etmek istiyorum. – Bonfocchi

+1

$ .ready (function() {}); –

+2

Üzgünüm, ama bu doğru bir çözüm değil. :(Kodunuz, belgenin en altta kaydırılıp kaybolacağı konusunda denetleniyor. İşte bir kanıt: http://jsfiddle.net/vvdb0292/2/.Bobince'nin cevabının doğru olduğunu düşünüyorum – kaboom

1

Bunu sanmıyorum yapılabilir.

DÜZENLEME:. Bu durumda , çerçeveler = 'someframe' ve kimliği = 'someframe2' iç çerçeve bir ad verme ve sonra karşılaştırılması çizgisinde bir şey [ 'someframe'] document.body.offsetWidth ile Document.getElementById ('someframe2'). offsetWidth size cevabı vermelidir.

+1

iframe içeriği aynı etki alanından geliyor. – Bonfocchi

37
var root= document.compatMode=='BackCompat'? document.body : document.documentElement; 
var isVerticalScrollbar= root.scrollHeight>root.clientHeight; 
var isHorizontalScrollbar= root.scrollWidth>root.clientWidth; 

Bu kaydırma için ihtiyaç olup olmadığını tespit eder. Iframe'lerin varsayılan değeri için bu, 'un'un bir kaydırma çubuğu olup olmadığıyla aynıdır, ancak kaydırma çubukları açık veya kapalıysa (üst belgede 'kaydırma = "evet"/"yok" "özniteliği kullanılarak veya CSS" taşmasıyla) : iframe belgesinde "kaydır/gizli") farklı olabilir.

+1

müthiş, teşekkürler – Sebas

+0

Yanıt – Julian

+0

olmalıdır Neden tüm compat modunda "documentElement" kullanmak yerine 'BackCompat' için test ediyorsunuz? – bab

0

Sanırım ikinci denemeniz doğru yolda. this yerine, document.body'u kaydırmayı/denetlemeyi denemelisiniz.

3
$(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; 
} 

geliştirilmiş-değiştirildi Jon`s Winstanley kodundan biraz

0

bu en azından Chrome, herhangi bir öğe üzerinde çalışır bulduk:

hasVerticalScrollbar = (element.scrollHeight > element.offsetHeight) 
     || 
(element.scrollHeight > element.clientHeight 

Yatay kaydırma çubukları tespit edilebilir aynı, Height yerine Width'u kullanarak.