2013-12-03 3 views

ответ

0

С JQuery было бы

var middle = (($('iframe').height())/2); 
$('iframe').scrollTop(middle); 
+0

'$ ('IFRAME'). Высота()' возвращает высоту фрейма, а не его содержимое , Так что это не прокрутится до середины – Bill

+0

Кто, что, где? Я больше не могу понять вопрос! Чтобы 'прокрутить содержимое iframe до середины страницы автоматически ',' iFrame' должен быть больше, чем страница. В любом случае jQuery здесь не задают. %) P Однако это прокручивает страницу до середины 'iFrame', предполагая, что' iFrame' находится в верхней части страницы! – loveNoHate

+0

Я думаю, что вопрос заключается в том, что iframe прокручивается до середины его содержимого - что невозможно в кросс-домене – Bill

0

Я пошел w3c.org с использованием новейших FF, Chrome и IE9 и бросил следующую команду в консоли JS (он работал во всех трех).

var fr = document.createElement("iframe"); 
fr.src = "http://w3c.org"; 
fr.onload = function() { 
    var de = (this.contentDocument||this.contentWindow.document).documentElement; 
    var bd = de.getElementsByTagName("body")[0]; 
    de.scrollTop = bd.scrollTop = Math.floor(bd.scrollHeight/2); 
} 
document.body.appendChild(fr); 

Так все, что вам нужно, это добавить функцию OnLoad к разметке

onload="(function() { 
    var de = (this.contentDocument||this.contentWindow.document).documentElement; 
    var bd = de.getElementsByTagName('body')[0]; 
    de.scrollTop = bd.scrollTop = Math.floor(bd.scrollHeight/2); 
})()" 
+0

Моя консоль показывает 'Uncaught TypeError: не удается прочитать документ свойства undefined' с помощью этого фрагмента – Bill

+0

Кроме того, 'this' будет ссылаться на глобальную переменную окна, а не на iframe. – Bill

Смежные вопросы