Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用浏览器时,IE9不会更新iFrame中的window.location.href';s后退按钮。变通办法?_Javascript_Iframe_Internet Explorer 9_Hashchange - Fatal编程技术网

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时会是多么混乱。。。