Изменение URL из iFrame: setTimeout меняет работу window.location? - PullRequest
0 голосов
/ 13 января 2012

My iframe содержит ссылку, которая должна изменить хэш / вызвать событие в родительском элементе.

Почему этот код не будет работать:

<!-- in iframe -->
<a href="#" onClick="parent.navigate();return false;">Link</a>

// in parent
  function navigate() {
    window.location.href = '#anchor';
  }

Но это так:

<!-- in iframe -->
<a href="#" onClick="parent.navigate();return false;">Link</a>

// in parent
  function navigate() {
    setTimeout(function() {
      window.location.href = '#anchor';
    }, 0); 
  }

Ответы [ 2 ]

0 голосов
/ 13 января 2012

Я думаю, что у вас есть проблема с контекстом, в котором находится функция navigate (), когда window находится в контексте iframe.

Попробуйте установить метод навигации вместо top.location.href, например:

// in parent
  function navigate() {
    top.location.href = '#anchor';
  }

или, альтернативно, в вашем фрейме вызовите parent.window.location.href = '#anchor'

0 голосов
/ 13 января 2012

@ я не комментирую, что у вас апостроф, скорее всего, причина

Даже подсветка кода из-за этого показывает разные блики.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...