Подтвердить что ты не робот

Как я могу обнаружить присутствие прокрутки (используя Javascript) в HTML iFrame?

Как я могу обнаружить присутствие прокрутки (используя Javascript) в HTML iFrame?

Я уже пробовал:

        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;
    }

Без успеха..

Я искал javascript objets в DOM Inspector, но ничего не нашел.

Можно ли обнаружить присутствие полосы прокрутки в iframe в javacscript?


Содержимое iframe происходит из одного домена.

Пока нет успеха.

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

4b9b3361

Ответ 1

Используя 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);
} 

Ответ 2

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

Это определяет, есть ли необходимость в полосе прокрутки. Для значения по умолчанию для iframes это то же самое, что и в том, есть ли полоса прокрутки, но если полосы прокрутки принудительно включены или выключены (с использованием атрибута 'scrolling = "yes" / "no" в родительском документе или переполнения CSS: прокрутка/скрытые в документе iframe), тогда это может отличаться.

Ответ 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;
}

улучшен - немного изменился код Jon`s Winstanley

Ответ 4

Я не думаю, что это можно сделать, если содержимое iframe происходит из другого домена из-за ограничений безопасности JavaScript.

EDIT: В этом случае что-то вроде строк iframe a name= 'someframe' и id = 'someframe2', а затем сравнивает кадры ['someframe']. Document.body.offsetWidth с document.getElementById('someframe2'). offsetWidth должен дать вам ответ.

Ответ 5

Думаю, твоя вторая попытка на правильном пути. За исключением this, вы должны попробовать прокрутить/проверить document.body.

Ответ 6

Я нашел, что это работает на любом элементе, по крайней мере в Chrome:

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

Горизонтальные полосы прокрутки могут быть обнаружены одинаково, используя Width вместо Height.