Убедитесь, что iframe имеет видимые полосы прокрутки?

Мне было интересно, знает ли кто-нибудь, как проверить, переполняется ли содержимое в iframe и видимы полосы прокрутки?

Спасибо

Ответ 1

Вы хотите проверить, больше ли элемент scrollHeight, чем clientHeight, или если элемент scrollWidth больше, чем clientWidth. Это можно сделать с помощью этих свойств напрямую или с помощью вспомогательных методов, предоставляемых jQuery.

MDN: element.scrollHeight

Если содержимое элемента создало вертикальную полосу прокрутки, Значение scrollHeight равно минимальному клиентуHeight элемента потребовалось бы для того, чтобы соответствовать всему содержанию в точке зрения без используя вертикальную полосу прокрутки. Когда содержимое элемента не создать вертикальную полосу прокрутки, то ее свойство scrollHeight равно к свойству clientHeight. Это может означать либо содержимое слишком короткий, чтобы требовать полосу прокрутки или что элемент имеет стиль CSS значение переполнения видимой (не прокручиваемой).

Ответ 2

в общем случае вы должны сравнить дельта элемента 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;

Ответ 3

Мне пришлось изменить код, чтобы заставить его работать.

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