我有一个脚本,写一个iFrame加载一个页面。我创建了一个JSFiddle来说明:
link JSFiddle loading CNN in a frame
这将在帧中加载CNN。如果你在新闻框中向下滚动,点击新文章,然后“返回”,Safari和Google Chrome中都有一些奇怪的行为:单击“返回”不会将iframe“返回”,而是将整个父帧“返回”。我如何才能防止这种情况发生?
同样奇怪的是,这种情况并不总是发生。自己尝试一下,点击至少5-10个链接,你会看到小提琴会不时地重置自己。这不应该发生
这是似乎只发生在Safari和Chrome中的行为,Opera和IE似乎没有这个问题...
2条答案
按热度按时间5gfr0r5j1#
当你点击不同的URL时,浏览器会记录历史事件,因为iframe是你所在页面的一部分,它会将iframe内部的点击记录为父页面的历史事件。不同的浏览器可能会有稍微不同的行为-我希望FF和Chrome是一种方式,IE的行为略有不同。然而,测试你的例子,Chrome和IE的工作原理完全相同,几乎与预期的一样。
所以澄清一下:加载JSFiddle对于浏览器来说是一个历史事件。单击按钮创建和加载Iframe不是历史事件。单击Iframe窗口中的URL链接是一个历史事件。
在这一点上,你有2个状态,浏览器记住,你可以在他们之间的历史来回。
3npbholx2#
如果你正在使用React,那么MemoryRouter就像一个魅力-https://reactrouter.com/en/main/router-components/memory-router