Javascript 使用浏览器时,IE9不会更新iFrame中的window.location.href';s后退按钮。变通办法?
我使用Javascript 使用浏览器时,IE9不会更新iFrame中的window.location.href';s后退按钮。变通办法?,javascript,iframe,internet-explorer-9,hashchange,Javascript,Iframe,Internet Explorer 9,Hashchange,我使用onhashchangejavascript事件向用户显示一系列“屏幕”,而无需为每个屏幕重新加载页面。将此页面放置在iFrame中时,IE9不会触发hashchange事件,window.location.href也不会按预期更新 我的预期:每当用户单击“继续”进入另一个屏幕时,URL的哈希部分都会更改。使用浏览器的后退和前进按钮时,浏览器会更改哈希值。这由javascript中的onhashchange事件处理程序捕获,并显示正确的内容 我观察到的是:所有支持onhashchange事
onhashchange
javascript事件向用户显示一系列“屏幕”,而无需为每个屏幕重新加载页面。将此页面放置在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不匹配
state1
,然后单击state2
,单击浏览器的后退按钮<代码>iFrame的当前状态应为state1
,但在我的IE9中,它在这一系列操作之后读取state2
。我的IE版本是9.0.8112.16421,这是正常版本
如何在IE9中的iFrame中检测页面上的后退按钮的使用?包含iFrame和iFrame内部的页面可以位于不同的域上。我可以完全控制iFrame中的页面,并且可以在保存iFrame的页面上放置任意Javascript
window.location.href
更新对我来说非常好。如果您是从iframe外部访问,是否确定您正在访问iframe.contentWindow.location.href
?如果是这种情况,也许您可以告诉我您与我的不同之处。我在这里创建了一个玩具示例来说明这个问题:似乎对我来说非常有效。“当前状态”会立即更新,并且location.href
会在下一秒跟上。即使使用浏览器的后退按钮?我现在很困惑。我在三台计算机上测试了这个,但没有一台能工作。你有什么版本的IE9(我使用的是9.0.8112.16421),什么版本的Windows(我试过Windows7 32位和64位)?一定有区别!我还发现讨论证实了我观察到的行为。哦,等等,我的错。后退按钮确实失败了。。。我只能假设这是在处理iFrame时Back按钮工作方式的一个小故障-它总是有点不确定,你可以想象当有几个iFrame时会是多么混乱。。。