Sou*_*ter 5 html javascript iframe html5-history
我尝试创建一些能够在其中托管其他子应用程序(相同域)的布局管理 Web 应用程序。
目前,主应用程序可以跟踪子应用程序中的任何导航并在主应用程序中保留导航记录。用户可以单击后退或前进按钮转到最近的页面。一切正常,直到我在子应用程序中找到一些代码,这些代码以编程方式更改子应用程序中的location.hash属性或调用history.pushState方法。
通常,浏览器会自动将旧的历史状态添加到正确的子应用程序的历史堆栈中。但是现代浏览器总是在主应用程序和导致主应用程序历史中断的所有其他 iframe(子应用程序)之间共享历史堆栈。用户不能在浏览器中单击返回到主应用程序之前访问的上一页。
根据W3C
该联席会议历史一个的顶级浏览器上下文是所有充分活动文档的所有浏览上下文的所有会话历史的联合对象共享该顶级浏览方面,与所有在各自当前的条目中的条目除当前的联合会话历史条目外,会话历史被删除。
我有2个问题。
是否可以为每个 iframe 创建单独的历史记录?我试着这样设置document.domain。
有什么办法可以阻止 iframe 导航/散列更改/pushState?我目前的想法是修补每个相关的属性/方法,并监听click事件以防止更改浏览器历史记录。我不确定这会奏效,而且这样做似乎太冒险了。
谢谢,
参考:https : //html.spec.whatwg.org/multipage/browsers.html#traverse-the-history
小智 0
我知道 Chrome 有一个新标签,它在与您的应用程序不同的进程中运行。您可以检查一下: https: //developer.chrome.com/apps/tags/webview
但这个标签并不是 HTML5 标准化的东西。大多数其他主要浏览器不支持此功能。
但对于 Iframe 来说,答案是否定的。
| 归档时间: |
|
| 查看次数: |
1092 次 |
| 最近记录: |