Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 返回iframe的历史记录,但更改主窗口的地址_Javascript_Iframe_History - Fatal编程技术网

Javascript 返回iframe的历史记录,但更改主窗口的地址

Javascript 返回iframe的历史记录,但更改主窗口的地址,javascript,iframe,history,Javascript,Iframe,History,我已经找到了解决办法,除了我需要的以外,我可以处理一切事情。下面是一个场景 就像在GMail中一样,主要内容在iframe中呈现。单击主页面上的链接以iframe为目标。这工作得很好,而且无缝。 此时,如果在浏览器上单击“上一步”,iframe将返回。这很好,因为涉及缓存,页面不会重新下载 添加修改散列的通用逻辑会破坏一切。现在,当您回击时,浏览器会更改,但不会更改iframe历史记录。我已经尝试访问了那个特定iframe的历史记录 frames['myiframe'].history.back

我已经找到了解决办法,除了我需要的以外,我可以处理一切事情。下面是一个场景

就像在GMail中一样,主要内容在iframe中呈现。单击主页面上的链接以iframe为目标。这工作得很好,而且无缝。 此时,如果在浏览器上单击“上一步”,iframe将返回。这很好,因为涉及缓存,页面不会重新下载

添加修改散列的通用逻辑会破坏一切。现在,当您回击时,浏览器会更改,但不会更改iframe历史记录。我已经尝试访问了那个特定iframe的历史记录 frames['myiframe'].history.back,但这仍然会更改哈希,而不会更改iframe源

我发现了一个隐藏的history.replaceStatetemp、iframelocation,当单击链接时,它可以无缝工作,但向后看时,它实际上会尝试在主窗口中加载iframe位置

我不知所措。我知道GMail不会在你每次回击或转发时都要求你提供所有信息。那么它是如何做到的呢?它是否使用多个iframe,并更改哪个iframe是可见的

谢谢

附言。 测试了一个简单的情况:创建一个iframe,并通过一些 现在通过location.href='something'更改哈希值,到目前为止还不错。现在,如果你明确地告诉iframe回到历史上——它不会
frames['iframe'].contentWindow.history.back

Gmail使用AJAX请求来填充我相信的Div层。您应该研究使用JQuery动态加载数据。还有一个jquery历史插件,它可以让您无缝地来回移动

这不是一个直接的答案,但如果您浏览一下jQuery BBQ@


它会覆盖后退/前进按钮,并保留浏览器中的历史记录(如果有任何用处)。

我还没有找到让浏览器负责使用历史记录中的缓存的方法

我的最终解决方案是使用jquery的历史插件和div对象的javascript哈希数组

var hash; // populated with the value after #
History[hash] = $('<div>').load(hash);
快速检查该值是否不为null,并用div替换屏幕中心。目前为止,它的工作原理类似于一个符咒,但如果单击已加载的链接,哈希值不会改变,因此通过单击已加载视图的链接来检测预期刷新会更加困难


祝你好运

重新填充div意味着重新获取数据,或者拥有多个div。如果您在Firefox中打开gmail并禁用样式,您将看到它有iFrame,但它修改了主窗口哈希。我已经在使用jquery+历史技巧,问题是后退按钮只能维护主窗口或iframe的历史。我不能同时更改主窗口历史记录和iframe历史记录,明白了吗。误解了这个问题。我已经查过了;谢谢你的推荐。尽管这很有用,但它并没有解决在更改窗口历史记录时更改iframe历史记录的问题