【问题标题】:Is there a way to close tab opened by a script from an iframe?有没有办法关闭由 iframe 中的脚本打开的选项卡?
【发布时间】:2021-11-30 06:08:40
【问题描述】:

我在网页中添加了一个 iframe,用于将视频链接转换为 mp3 格式。 iframe 显示一个按钮,单击该按钮会在开始下载所需的 mp3 文件之前打开一个新选项卡。我想知道javascript中是否有办法关闭新打开的选项卡以确保更好的用户体验。我知道window.close() 可以做到这一点,但不确定我们是否可以将其应用于由 iframe 中的脚本打开的选项卡。

这是有问题的 iframe,它向 src 属性中指定的链接发送 get 请求。

<iframe id="downloadIframe" src="https://loader.to/api/button/?url=${vidLink}&f=mp3&color=0964D3"></iframe>

加载 iframe 时,您可以在它加载的代码中看到这一点:

<a id="downloadButton" onclick="onClick();window.open('https://loader.to/ajax/a.php');" href="#"> 

我认为打开的窗口是由window.open()引起的。 知道我无法更改 iframe 中的代码,知道如何关闭该选项卡吗?

【问题讨论】:

  • 只有打开窗口或标签的脚本才能关闭它。
  • JavaScript 不区分窗口和选项卡。所有窗口操作都将在其中一个上进行。
  • 是的,我知道只有打开窗口或选项卡的脚本才能关闭它。我想知道在这种情况下我们是否可以做些什么来绕过它?

标签: javascript html api iframe


【解决方案1】:

在 iframe 而不是选项卡中打开 dowlnoad。

然后您可以稍后将 iframe 从 DOM 中删除,使其消失。

【讨论】:

  • 我不确定在 ifra 中打开下载是什么意思。你能详细说明一下吗?
  • &lt;iframe src="downloadURL"&gt;
  • iframe 中的 src 属性已被填充。如果 iframe 在单击后被删除,则不会关闭新打开的选项卡,因为到那时打开的脚本已经这样做了。
【解决方案2】:

您可以使用沙盒属性阻止 iframe 打开新标签页。 sandbox="" 沙盒 对框架中的内容应用额外的限制。该属性的值可以为空以应用所有限制,也可以为空格分隔的标记以解除特定限制。 你可以阅读更多关于它here

【讨论】:

    猜你喜欢
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多