这似乎是一个仅限 IE9 的错误。
当 Flash 对象使用 JavaScript(Flash/ActionScript 端的外部接口)与 HTML 文档交互时,会发生这种情况,并且当包含带有 Flash 对象的 HTML 文档的 IFRAME 发挥作用时,它会抬起丑陋的脑袋。
看到您如何指定您正在使用 YouTube API,遗憾的是,您无法确保 Flash 取消注册自身并且不会调用 JavaScript 函数(反之亦然),因为您依赖第三方来删除它在您的应用程序域之外运行的软件。
如果您不需要 YouTube API,而只是在应用程序中获取视频的快速方法,那么最安全的选择是使用为 IE9 嵌入的旧样式对象和用于其他理智世界的 API / IFRAME 嵌入。
<object width="{WIDTH}" height="{HEIGHT}">
<embed src="https://www.youtube.com/v/{VIDEO_ID}?version=3&autoplay=1"
type="application/x-shockwave-flash"
allowscriptaccess="always"
width="{WIDTH}" height="{HEIGHT}"></embed>
</object>
删除上面的对象(您可以使用 SWFObject 的“embedSWF”和“removeSWF”就可以了)将使视频播放器离开您的页面,而不会引发任何_flash _remove .. 警告。
如果您需要 YouTube API / 控制视频播放器状态:
您是否尝试过在 ytplayer 上调用“销毁”方法?取消销毁,虽然我不愿意使用超时发布“答案”,但在将 iframe 的源设置为空字符串(以便文档卸载)之前,给 Flash 对象一些时间来取消注册,然后清除 iframe 或者它是父容器。
虽然我记得在之前的一个项目中,这让我们发疯了(上下文是一个动态添加和删除视频的单页界面),我们求助于使用 AS3 YT 代码编写自己的 Flash 播放器后备。这就是它有多烦人。