我正在使用onhashchange
javascript事件向用户显示一系列“屏幕”,而不会为每个屏幕重新加载页面。将此页面放在iFrame中时,IE9不会触发hashchange事件,并且window.location.href未按预期更新。
我的期望:每当用户点击“继续”进入另一个屏幕时,网址的哈希部分就会发生变化。使用浏览器的后退和前进按钮时,浏览器会更改哈希值。这是由javascript中的onhashchange事件处理程序捕获的,并显示正确的内容。
我观察到的内容:支持onhashchange事件(包括IE9)的所有浏览器中的行为都符合预期。但是,当有问题的页面加载到iFrame中时,IE9中的行为会发生变化。当我在IE9中单击浏览器的后退按钮时会发生以下情况:
玩具示例:由于其他人报告没有看到此行为,我在此处创建了一个玩具示例: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。
答案 0 :(得分:0)
window.location.href
更新对我来说非常好。如果您从iframe外部访问,确定要访问iframe.contentWindow.location.href
吗?