从 HTML/JavaScript 的角度来看,我目前知道 2 种方法可以生成新的浏览器选项卡(或窗口)。
- 具有目标属性的 HTML 表单
<form>
或锚点,例如<a>
target="_blank"
- JavaScript 调用
window.open(url, name, features);
注意:我故意忽略了仅 IE 的showModalDialog和showModelessDialog方法。
然而,我最近遇到了一个非常错误的场景,我能够生成多个选项卡(实际上是无穷无尽的)而无需单击链接、提交表单或仅通过加载页面在 Internet Explorer 中调用 window.open()。
由于这个错误导致了糟糕的用户体验(本质上是浏览器锁定),我通过阻止直接访问这个屏幕来迅速缓解这个问题 - 但我很困惑其他选项卡如何甚至产生(不管实际错误)如果没有触发了上述选项。
遗憾的是,有问题的屏幕涉及一些与 SSO/安全相关的登录代码,因此我无法在此处发布详细信息,但我很想知道是否有任何其他方法可以生成我可能忽略的新选项卡,以便我可以深入研究代码以查看是否有解决方案。
例如,是否有任何可能触发新选项卡的 HTTP 标头?