javascript - 使用 iframe 嵌入 Youtube 视频给出 "Unsafe JavaScript attempt ... "

标签 javascript iframe youtube youtube-iframe-api

我正在尝试使用以下代码嵌入 YouTube 视频:

<iframe width="425" height="319" frameborder="0" wmode="Opaque"allowfullscreen=""
      src="http://www.youtube.com/embed/8vJwFvFi4ZY?wmode=transparent">
</iframe>

虽然它工作正常,但它在控制台中给出了这个错误:

Chrome version 22.0.1229.94:

Unsafe JavaScript attempt to access frame with URL http://example.com/
from frame with URL http://www.youtube.com/embed/8vJwFvFi4ZY?wmode=transparent.
Domains, protocols and ports must match.

Firefox 版本 17.0:

Error: Permission denied to access property 'toString'

我四处搜索,但我发现这可能是 YouTube 的问题,他们应该解决它,

问题是:我怎样才能摆脱这个错误? (无论如何,甚至通过压制它。)

最佳答案

你无法阻止它,至少不能以我所知道的任何方式(而且我已经尝试了很多)。 iframe 目标中有一个脚本会尝试访问您的文档,可能会寻找它可以调用以启用 API 的全局函数。

另一件事是,即使使用他们自己的 iframe API,错误仍然存​​在: http://jsbin.com/izabed/1/edit

这样做没有坏处,您的视频会正常播放。但如果你在控制台中运行它,它看起来有点大胆。他们可能应该将其作为参数包括在内,起初我认为这是 origin 的想法。参数,但它没有任何区别。

还值得注意的是,他们自己的 demo显示相同的错误(和其他错误)。此外,如果您使用 embed标记而不是 iframe,它不会显示任何错误。

所以你可以做这样的事情来防止大多数桌面浏览器中的错误:

if(haveflash) {
    // use <embed>
} else {
    // use iframe
}

更新

大多数浏览器不再支持 flash,nor does Adobe .不幸的是,这意味着使用 <embed>不再是一个可行的选择。

关于javascript - 使用 iframe 嵌入 Youtube 视频给出 "Unsafe JavaScript attempt ... ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13625239/

相关文章:

javascript - 为什么访问给定位置旁边的元素会出现错误,而访问前一个元素却可以正常工作?

javascript - 如果 X 次函数结果为 Z,则调用另一个函数

javascript - 如何使用 javascript 或 jQuery 获取 iframe 之外的元素?

javascript - 使用 AS3 Adob​​e AIR 加载 YouTube 视频

android - android应用程序:播放嵌入在webview中的youtube视频

javascript - 如果第一个 child 有类,如何设置元素的样式?

javascript - 有没有办法从使用 JavaScript 运行到 "stop script"?

jquery.form和文件上传的跨域请求

jQuery : Set iframe height dynamically by content

html - 如何嵌入带有自动播放缩略图的YouTube视频