Мне было интересно, знает ли кто-нибудь, как проверить, переполняется ли содержимое в iframe и видимы полосы прокрутки?
Спасибо
Мне было интересно, знает ли кто-нибудь, как проверить, переполняется ли содержимое в iframe и видимы полосы прокрутки?
Спасибо
Вы хотите проверить, больше ли элемент scrollHeight
, чем clientHeight
, или если элемент scrollWidth
больше, чем clientWidth
. Это можно сделать с помощью этих свойств напрямую или с помощью вспомогательных методов, предоставляемых jQuery.
Если содержимое элемента создало вертикальную полосу прокрутки, Значение scrollHeight равно минимальному клиентуHeight элемента потребовалось бы для того, чтобы соответствовать всему содержанию в точке зрения без используя вертикальную полосу прокрутки. Когда содержимое элемента не создать вертикальную полосу прокрутки, то ее свойство scrollHeight равно к свойству clientHeight. Это может означать либо содержимое слишком короткий, чтобы требовать полосу прокрутки или что элемент имеет стиль CSS значение переполнения видимой (не прокручиваемой).
в общем случае вы должны сравнить дельта элемента scrollHeight/scrollWidth и offsetHeight/offsetWidth. если положительный, то "мы получили победителя". но... при поиске полос прокрутки в iframe все становится немного сложнее:
var frm=document.getElementById("frm");
var iIsVrScrollBar = frm.contentWindow.document.documentElement.scrollHeight>frm.contentWindow.document.documentElement.offsetHeight ? 1 : 0;
var iIsHrScrollBar = frm.contentWindow.document.documentElement.scrollWidth>frm.contentWindow.document.documentElement.offsetWidth ? 1 : 0;
Мне пришлось изменить код, чтобы заставить его работать.
1) IFRAME и содержимое находятся на одной структуре веб-сайта/папки
2) процедура инициируется установкой "sizewindow" в TRUE
3), этот фрагмент является частью функции таймера, установленной в течение 0,5 секунды
4), протестированные на IE11, FF34 и 35, Chrome 31 и 40 и Opera 12.6
5) активный код уменьшает размер окна до большего, чем содержимое,
см. http://www.users.waitrose.com/~cresby/map2.htm
if (sizewindow){
if(iIsVrScrollBar==1) {
frm.style.height = (frm.contentWindow.document.body.offsetHeight+20);
iIsVrScrollBar = (frm.scrollWidth!=frm.contentWindow.document.documentElement.scrollWidth) ? 1 : 0;
if(iIsVrScrollBar==0) sizewindow=false;
}else{
frm.style.height = (frm.contentWindow.document.body.offsetHeight-10);
iIsVrScrollBar = (frm.scrollWidth!=frm.contentWindow.document.documentElement.scrollWidth) ? 1 : 0;
if(iIsVrScrollBar==1) {frm.style.height = (frm.contentWindow.document.body.offsetHeight+10);}
}
}