Me preguntaba si alguien sabe cómo comprobar para ver si el contenido de un iframe se está desbordando y las barras de desplazamiento están visibles?Verifique si un iframe tiene barras de desplazamiento visibles?
Gracias
Me preguntaba si alguien sabe cómo comprobar para ver si el contenido de un iframe se está desbordando y las barras de desplazamiento están visibles?Verifique si un iframe tiene barras de desplazamiento visibles?
Gracias
desea comprobar si el elemento de scrollHeight
es mayor que el clientHeight
, o si el elemento de scrollWidth
es mayor que el clientWidth
. Esto se puede hacer con esas propiedades directamente, o mediante el uso de métodos auxiliares proporcionados por jQuery.
If the element's content generated a vertical scrollbar, the scrollHeight value is equal to the minimum clientHeight the element would require in order to fit all the content in the viewpoint without using a vertical scrollbar. When an element's content does not generate a vertical scrollbar, then its scrollHeight property is equal to its clientHeight property. This can mean either the content is too short to require a scrollbar or that the the element has CSS style overflow value of visible (non-scrollable).
, en general, se debe comparar el delta del elemento scrollHeight/scrollWidth y offsetHeight/offsetWidth. si es positivo, entonces 'tenemos un ganador'. pero .. en la búsqueda de las barras de desplazamiento en un iframe, las cosas se ponen un poco de poco más complicado:
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;
Debe agregar que esto solo funciona si el ifrme src viene del mismo origen que la página web que lo hospeda. Un error de ejemplo sería: "Unbeught SecurityError: Blocked a frame with origin" http: // ... "from access to a frame with origin" https: // ..... ".El marco que solicita acceso tiene un protocolo de "http", el marco al que se accede tiene un protocolo de "https". Los protocolos deben coincidir. – gae123
tuve que modificar el código para conseguir que funcione.
1) la IFRAME & contenidos están en la misma estructura del sitio web/carpeta
2) el procedimiento es instigado ajustando "sizewindow" TRUE
3) que fragmento se parte de un conjunto de funciones de temporizador en anout 0,5 segundos
4) ensayados en EI11, FF34 & 35, Chrome 31 & 40, & Opera 12,6
5) c activo oda tamaño de la ventana a poco más grande que el contenido,
ver 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);}
}
}
hace esto método requiere que el contenido del iframe estar alojada en el mismo servidor, o puede ser de varios dominios? – Olokoo
Puede ser porque el elemento iframe está en su dominio. El contenido no es (necesariamente), pero el contenido finalmente definirá scrollWidth y scrollHeight del iframe y no importa lo contrario. – jimp
Intenté esto, y no funcionó, obtuve el mismo resultado para ambos, y ambos son la altura del elemento. \t \t función checkScroll() { \t \t \t var intElemScrollHeight = document.getElementById ('websiteView'). ScrollHeight; \t \t \t var intElemClientHeight = document.getElementById ('websiteView') clientHeight.; \t \t \t alerta (intElemScrollHeight); \t \t \t alerta (intElemClientHeight); \t \t – Olokoo