在Firefox中,如果更改了iframe的window.location,则会将其填充到顶级窗口的历史记录中。
如果用户现在点击浏览器后退按钮,则iframe的内容将更改,而不是浏览器返回上一个HTML页面。
对于某些架构来说,这是完全错误的。
有没有办法用JavaScript阻止Firefox(3.x)这样做?
(请坚持这个问题,而不是为什么/何时/如何使用iframe与其他技术相比。)
答案 0 :(得分:2)
答案 1 :(得分:0)
我有同样的问题,并在阅读本文时研究可能的方法。我不知道你是否解决了这个问题,但我想我会在IFrame'd窗口中使用unload事件来通知父窗口何时被卸载。
如果iframe被“有效”方法关闭,则会在父级设置一个变量来表示iframe应该卸载
如果父级重新加载/更改iframe的src,则将变量设置为表示预期卸载
如果在iframe中发生了意外卸载,我认为它是后退按钮并相应地更新父页面(例如,在父级历史记录中跳回另一步,或者执行其他操作)。
这里唯一丑陋的情况是,如果父页面被卸载并且iframe也会抛出卸载 - 取决于父页面更改的速度,您可能会遇到一个竞争条件,其中父级的iframe卸载处理程序是否被触发。 / p>
答案 2 :(得分:-2)
有没有办法用JavaScript阻止Firefox这样做?
键入地址栏about:config
并查找选项“browser.cache.memory.enable”并将值更改为false。然后使用选项“browser.cache.disk.enable”禁用文件系统上的缓存。在此之后,这种行为应该消失,到目前为止理论。
P.S。:我从未亲自尝试过。