如何在HTML iFrame中檢測滾動條的存在(使用Javascript)?



2 Answers

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

這將檢測是否需要滾動條。 對於iframe的默認值,這與是否有滾動條相同,但是如果強制滾動條打開或關閉(使用父文檔中的'scrolling =“yes”/“no”'屬性,或者CSS'溢出:滾動/隱藏'在iframe文檔中)然後這可能會有所不同。

Question

如何在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內容來自同一個域。

直到現在都沒有成功..

替代文字http://www.upvtp.com.br/file.php/1/help_key.jpg




我發現這適用於任何元素,至少在Chrome上:

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

可以使用“ Width而不是“ Height來檢測水平滾動條。




如果iframe內容由於JavaScript安全限製而來自其他域,我認為不能這樣做。

編輯:在這種情況下,給iframe一個名稱='someframe'和id ='someframe2',然後比較幀['someframe']。document.body.offsetWidth與document.getElementById('someframe2') .offsetWidth應該給你答案。




Related