极其奇怪的行为:当脚本被阻止然后被允许时,IE11 似乎创建了一个不可见的选项卡 - 如何修复它?

Posted

技术标签:

【中文标题】极其奇怪的行为:当脚本被阻止然后被允许时,IE11 似乎创建了一个不可见的选项卡 - 如何修复它?【英文标题】:Extremely weird behavior: IE11 seems to create an invisible tab when scripts are blocked and then allowed - how to fix it? 【发布时间】:2016-05-02 20:17:12 【问题描述】:

最好的IE:

有一个带有 html 文档的 U 盘。当用户在 IE11 中打开它并且脚本被阻止时,会出现一个提示以允许这些脚本运行。

当您点击允许时,网站似乎会重新加载,但看起来也像是打开/关闭了一个新选项卡。

一旦启用 JS,您就会被重定向到网站的在线版本。

现在,网站上有一段视频会在 10 秒后开始自动播放。但在 IE11 中,几秒钟后,相同的视频开始并行播放,因此您会听到两次声音。

当您检查 DOM 并删除 <video> 标签(只有 1 个)时,一个视频会停止播放。后来开始的那个虽然一直在播放。 即使我访问其他网站,视频也会继续播放。

只有关闭浏览器才会停止播放视频。

当我允许直接执行脚本时,不会发生此行为。

使用 video.js 和 jQuery。

有什么想法吗?

【问题讨论】:

使用 IE 的人都知道这一点并且知道如何通过允许本地文件运行脚本来修复它。 ...作为一种解决方法,我建议您在启动视频之前检测是否 IE,如果,提示用户启动视频。不可见的标签会在那里,但不会打扰你运行任何东西,所以我猜这没什么坏处..!? @LGSon 这就是我们最终所做的,但我仍然对那里发生的事情感到好奇.. 【参考方案1】:

HTML 元素不需要 javascript 和/或 ActiveX 来提供其内容。它们是自动化的。

页面加载并呈现为纯 HTML 后,允许 JavaScript 将触发 DOM 构建并重新呈现内容。但是,DOM 可能会复制媒体对象的实例并开始运行并行流,即对已经由 HTML 自动化启动的流的复制。 !DOM 不可见。

因此,没有新选项卡正在打开或无法关闭,它只是一个处理初始流的 HTML 自动化实例。

只有在本地运行 HTML 页面时才会发生这种情况。

最后: 避免这种情况(预期但不受欢迎的行为)的最佳方法是: 将视频元素“autoplay”属性设置为“false”。

附言: 关于您所说的以下问题:“一旦启用 JS,您就会被重定向到该网站的在线版本。”

这是任何浏览器都不能或不会单独为您做的事情。因此,您必须自己删除触发浏览器导航到在线内容的代码。 祝你好运。

【讨论】:

以上是关于极其奇怪的行为:当脚本被阻止然后被允许时,IE11 似乎创建了一个不可见的选项卡 - 如何修复它?的主要内容,如果未能解决你的问题,请参考以下文章

IE9怎么设置阻止弹出窗口

IE 9 - 更改字体大小后文本框中的文本被截断(百分比)

由于 mime 类型不匹配,IE9 脚本响应被阻止

由于不允许的 MIME 类型(“video/mp2t”),来自 TypeScript 的脚本被阻止

由于 Heroku 上的 MIME 类型不匹配,脚本被阻止

什么触发了 IE 增强安全警告