2013-05-29 4 views
12

Я создал две веб-страницы, одна содержит другую в iframe. Я хотел бы прокрутить встроенную страницу с родительской страницы через javascript.прокрутка iframe с родительской страницы

То, что я пытался до сих пор:

  1. $('#go').scrollTop(200);

  2. $('.footer').scrollTop(200);

  3. var frame = document.getElementById('go');
    frame.contentWindow.scrollTo(0, 200);

ни один из них не работали

родительской веб-страница HTML:

<html> 
<body> 
. 
. 
. 
<div class="footer"> 
     <iframe id="go" src="go.html"></iframe> 
    </div> 
    </body> 
</html> 

Оба этих веб-страниц являются локальными файлами на компьютере, и я использую Google Chrome с флагом «--allow-доступ к файлам, из-файлов».

Как прокрутить iframe до определенной позиции?

+0

Вы знаете содержание «go.html»? можете ли вы просто сосредоточиться на требуемом элементе внутри него? –

+0

@YuriyGalanter Я знаю содержимое go.html, но он содержит другой iframe в другом домене, поэтому я не могу его получить. Я сделал iframe в iframe, чтобы обойти одну и ту же политику происхождения. – stackErr

ответ

7

Это работает:

document.getElementById("go").contentWindow.setTimeout("this.scrollTo(0, 200);",1); 

Update. Doh. Работает только в IE, но я думаю, что там что-то есть.

Update 2 Это работает универсально:

document.getElementById("go").onload = function() { this.contentWindow.scrollTo(0, 200) }; 

Вы должны ждать содержание IFrame, чтобы закончить загрузку для scrollTo работать.

+0

Да, в Chrome не работает! И я также попробовал несколько вариантов с SetTimeout уже без везения :( – stackErr

+0

Обновленное решение, пожалуйста, попробуйте. –

3

Вы можете использовать window.postMessage для отправки сообщения от родительского фрейма к iframe, сообщая ему прокручивать. Это заставляет вас настроить сценарий postMessage в родительском фрейме и сценарий receiveMessage в iframe. Это код receiveMessage, который фактически прокручивает iframe.

Я использовал этот polyfill вполне успешно: http://benalman.com/projects/jquery-postmessage-plugin/

+0

Звучит многообещающе, обновится после того, как я попробую. – stackErr

+0

Решение, предоставленное Юрием, намного проще реализовать, чем это. Спасибо за плагин, пригодится в будущем! – stackErr