javascript – 如何防止iframe修改顶级浏览上下文(top.history)?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何防止iframe修改顶级浏览上下文(top.history)?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1611字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 如何防止iframe修改顶级浏览上下文(top.history)?](/upload/InfoBanner/zyjiaocheng/767/d1b2b18409e6472e8ac36e3a8a0a194d.jpg)
我尝试创建一些布局管理Web应用程序,它能够托管其中的其他子应用程序(同域).
目前,主应用程序可以跟踪子应用程序中的任何导航并在主应用程序中保存导航记录.用户可以单击后退或前进按钮转到最近页面.一切正常,直到我在子应用程序中找到一些代码,以编程方式更改location.hash属性或在子应用程序中调用history.pushState方法.
通常,浏览器会自动将旧历史状态添加到正确的子应用程序的历史堆栈中.但是现代浏览器总是在主应用程序和导致主要应用程序的破碎历史的所有其他iframe(子应用程序)之间共享历史堆栈.用户无法在浏览器中单击返回主应用程序之前访问的上一页.
根据W3C
The joint session history of a top-level browsing context is the union
of all the session histories of all browsing contexts of all the fully
active Document objects that share that top-level browsing context,
with all the entries that are current entries in their respective
session histories removed except for the current entry of the joint
session history.
我有两个问题.
>是否可以为每个iframe创建单独的历史记录?我尝试像这样设置document.domain.
>主要应用领域是’apps.site.com’.
>子应用程序域是’apps.site.com’但我将其更改为’site.com’以防止跨站点脚本.但它不起作用,因为浏览器同步此历史记录而不是iframe.
>有没有办法阻止iframe导航/ hashchange / pushState?
我目前的想法是修补每个相关的属性/方法,并听取click事件以防止更改浏览器历史记录.我不确定这会起作用,这样做似乎太冒险了.
谢谢,
参考:
https://html.spec.whatwg.org/multipage/browsers.html#traverse-the-history
解决方法:
我知道Chrome有一个新标签,它在一个与您的应用程序不同的进程中运行.您可以查看:https://developer.chrome.com/apps/tags/webview
但是这个标签不是HTML5标准化的标签.大多数其他主流浏览器都不支持此功能.
但对于Iframe,答案是否定的.
内容总结
以上是互联网集市为您收集整理的javascript – 如何防止iframe修改顶级浏览上下文(top.history)?全部内容,希望文章能够帮你解决javascript – 如何防止iframe修改顶级浏览上下文(top.history)?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。