Как я могу обнаружить присутствие прокрутки (используя 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
Ответы
Ответ 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
.