0

我正在使用onhashchangejavascript 事件向用户显示一系列“屏幕”,而无需为每个屏幕重新加载页面。将此页面放置在 iFrame 中时,IE9 不会触发 hashchange 事件,并且 window.location.href 不会按预期更新。

的期望:每当用户点击“继续”进入另一个屏幕时,URL 的哈希部分就会改变。当使用浏览器的后退和前进按钮时,浏览器会更改哈希值。这被 javascript 中的 onhashchange 事件处理程序捕获,并显示正确的内容。

我观察到的是:所有支持 onhashchange 事件(包括 IE9)的浏览器中的行为都符合预期。但是,当相关页面加载到 iFrame 中时,IE9 中的行为会发生变化。当我在 IE9 中单击浏览器的后退按钮时,会发生以下情况:

  • 不会触发 hashchange 事件。
  • window.location.href 和 window.location.hash 保持与单击后退按钮之前相同
  • 如果我右键单击 iFrame 并查看 iFrame 的属性,URL 将显示更改后的哈希。即属性窗口中的 URL 与 window.location.href 不匹配

玩具示例:因为其他人报告没有看到这种行为,我在这里创建了一个玩具示例:http: //jonemo.de/stuff/ie9iframe/test.html。单击state1,然后单击state2,单击浏览器的返回按钮。Current state of iFrame应该读取state1,但在我的 IE9 中,它会state2在这一系列操作之后读取。我的 IE 是 9.0.8112.16421 版本,这是正常的发布版本。

如何在 IE9 中的 iFrame 内检测页面上后退按钮的使用?持有 iFrame 的页面和 iFrame 内部的页面可以位于不同的域中。我可以完全控制 iFrame 中的页面,并且可以在包含 iFrame 的页面上放置任意 Javascript。

4

1 回答 1

0

window.location.href更新对我来说非常好。如果您从 iframe 外部访问,您确定要访问iframe.contentWindow.location.href吗?

于 2011-12-30T20:53:07.057 回答