2014-09-26 2 views
1

Я ищу некоторую помощь на то, что должно быть основным сценарий (я думаю), но я не могу вполне понять это сам ..Использование IFrame и Javascript для прокрутки родительской страницы

У меня есть страница , с iFrame, отображающим страницу, на которой у меня есть только доступ к заголовку. Я хотел бы сделать так, чтобы, когда кто-то нажимает любую ссылку (тег) в окне iFrame, она прокручивает мою родительскую страницу вверху (или определенному месту). Возможно ли это?

Редактировать: Кроме того, если это важно, я уже использую скрипт resizer iFrame Дэвида Брэдшоу для изменения размера кадра на лету, который использует postmessage для связи frame-> page. https://github.com/davidjbradshaw/iframe-resizer

Edit2: Родительское окно и окно IFrame является междоменным

+0

http://stackoverflow.com/questions/935127/how-to-access-parent-iframe-from -javascript – CodeHunter

+0

Последняя версия iframe-resizer как опция для прокрутки страницы, а также поддерживается при связывании страниц. –

ответ

1

См Trigger events in iframe's parent window

Добавить некоторые JS на страницу Iframe:

$(document).ready(function(){ 
    $('a').click(function(){ 
     window.parent.$(window.parent.document).trigger('scroll'); 
    }); 
}); 

Тогда на родительской странице:

$(document).bind('complete', function(){ 
    //Add scroll code. 
}); 

Вы можете использовать сообщение для сообщения что-то подобное, но если вы контролируете обе страницы, и они находятся в одном домене, это должно сработать. Если они находятся в разных доменах (которые вы не указали), вы застряли с использованием postMessage, который, я считаю, не полностью совместим с кросс-браузером и, следовательно, не будет работать со всеми настройками, и на самом деле это не резерв.

Если вы хотите использовать PostMessage и вы используете плагин, просто сделать что-то вроде

window.addEventListener("message",function(event){ 
    if(event.origin == 'http://yourdomain.com'){ 
     if(event.data == 'messageString'){ 
      //Add scroll code 
     } 
    } 
}); 
+0

Извините, я добавил изменение. Я забыл упомянуть, что это кросс-домен. – flipnotic

+0

Перекрестный домен, который вы застряли, используя сообщение. На самом деле, я не верю. – Leeish

+0

Вот хорошая статья, которая объясняет все это: https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage На самом деле это довольно просто. – Leeish

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