从iFrame更改URL:setTimeout会改变window.location的工作方式吗?

时间:2012-01-13 01:50:26

标签: javascript iframe

我的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 :(得分:0)

@am不是我评论你有撇号可能是原因

即使代码荧光笔因此而显示不同的亮点。

enter image description here

答案 1 :(得分:0)

我认为你对navigate()函数所在的上下文存在问题,window位于iframe的上下文中。

尝试设置导航方法以改为使用top.location.href,例如:

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

或者,在您的iframe中,请致电parent.window.location.href = '#anchor'