是否可以在 iframe 中打开弹出窗口

是否可以强制在已发生打开弹出窗口操作的 iframe 中打开弹出窗口?

我有一个 VueJs 应用程序,它在 iframe 内显示一个网站,并且不希望该应用程序打开新窗口。但仅用沙箱阻止所有弹出窗口也是不可接受的,因为有些弹出窗口包含关键功能。

因此,我正在寻找任何方法来“强制”target="_blank"网页上的链接。我知道没有标准的方法可以做到这一点,但愿意接受有关如何解决此问题的任何建议。

也许有一种方法可以禁用浏览器打开新窗口和劫持调用的能力。

期待您的答复。


一只名叫tom的猫
浏览 101回答 1
1回答

慕侠2389804

大多数情况下,这种能力要么全有,要么全无。由于它是 中的不同站点iframe,因此您可能无权访问该iframe内容,因此无法控制其中的链接。iframe有一个sandbox您可以添加选项的allow-popups属性allow-popups:允许弹出窗口(例如window.open()、target="_blank"、 或showModalDialog())。如果不使用此关键字,弹出窗口将默默地无法打开。如:<iframe ... sandbox="allow-popups"></iframe>还有:allow-popups-to-escape-sandbox:让沙盒文档打开新窗口,而不让这些窗口继承沙盒。例如,这可以安全地对广告进行沙箱处理,而不会对广告链接到的页面施加相同的限制。allow-modals:让资源打开模式窗口。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript