Mi chiedevo se qualcuno sa come verificare se il contenuto di un iframe è straripante e le barre di scorrimento sono visibili?Verificare se un iframe ha barre di scorrimento visibili?
Grazie
Mi chiedevo se qualcuno sa come verificare se il contenuto di un iframe è straripante e le barre di scorrimento sono visibili?Verificare se un iframe ha barre di scorrimento visibili?
Grazie
Volete verificare se dell'elemento scrollHeight
è maggiore del clientHeight
, o se l'elemento del scrollWidth
è maggiore della clientWidth
. Questo può essere fatto con queste proprietà direttamente o usando i metodi di supporto forniti da 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).
, in generale, si dovrebbe confrontare il delta del dell'elemento scrollHeight/scrollWidth e offsetHeight/offsetWidth. se positivo allora 'abbiamo un vincitore'. ma .. quando alla ricerca di barre di scorrimento in un iframe, le cose si fanno un po 'po' più complicato:
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;
Dovresti aggiungere che funziona solo se l'iframe src proviene dalla stessa origine della pagina web che lo ospita. Un errore di esempio potrebbe essere: "Uncaught SecurityError: Bloccato un frame con origine" http: // ... "dall'accesso a un frame con origine" https: // ..... ".Il frame che richiede l'accesso ha un protocollo di "http", il frame a cui si accede ha un protocollo di "https". I protocolli devono corrispondere. – gae123
ho dovuto modificare il codice per farlo funzionare.
1) IFRAME & contenuti sono sulla stessa struttura del sito/cartella
2) la procedura viene istigata impostando "sizewindow" TRUE
3) frammento fa parte di un insieme funzione timer a Anout 0,5 secondi
4) testati su IE11, FF34 & 35, Cromo 31 & 40, & Opera 12,6
5) c attivo ode dimensioni della finestra per poco più grande di contenuti,
vedere 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);}
}
}
Questo metodo richiede che il contenuto del iframe essere ospitato sullo stesso server, o può essere cross-domain? – Olokoo
Può essere perché l'elemento iframe è nel tuo dominio. Il contenuto non è (necessariamente), ma il contenuto definirà la scrollWidth e scrollHeight dell'iframe e non importa altrimenti. – jimp
Ho provato questo, e non ha funzionato, ottengo lo stesso risultato per entrambi, e sono entrambi l'altezza dell'elemento. \t funzione checkScroll() { \t \t \t var intElemScrollHeight = document.getElementById ('websiteView'). ScrollHeight; \t \t \t var intElemClientHeight = document.getElementById ('websiteView'). ClientHeight; \t \t \t avviso (intElemScrollHeight); \t \t \t avviso (intElemClientHeight); \t \t} – Olokoo