Javascript 替换youtube中的url以嵌入代码-错误:访问属性的权限被拒绝';toString';

Javascript 替换youtube中的url以嵌入代码-错误:访问属性的权限被拒绝';toString';,javascript,jquery,youtube,Javascript,Jquery,Youtube,我在FireBug中有以下代码和错误: 错误:访问属性“toString”的权限被拒绝 如何修复此错误 HTML: http://www.youtube.com/watch?v=UNMLEZrukRU JS: $(“div.yturl”)。每个(函数(){ var regex=/(\?v=\&v=\/\d\/\/embed\/\\\/v\/\.be\/)([a-zA-Z0-9\-\\\+)/; var youtubeurl=$(this.text(); var regexyoutubeurl=

我在FireBug中有以下代码和错误:

错误:访问属性“toString”的权限被拒绝

如何修复此错误

HTML:

http://www.youtube.com/watch?v=UNMLEZrukRU
JS:

$(“div.yturl”)。每个(函数(){
var regex=/(\?v=\&v=\/\d\/\/embed\/\\\/v\/\.be\/)([a-zA-Z0-9\-\\\+)/;
var youtubeurl=$(this.text();
var regexyoutubeurl=youtubeurl.match(regex);
if(regexyoutubeurl)
{
$(this.html(“”);
}
});

演示:

该问题可能是由工作不正常的扩展引起的


在Firefox疑难解答中启动Firefox,使用安全模式检查是否有一个扩展或硬件加速导致了问题(切换到默认主题:Firefox/Tools>Add-ons>Appearance/Themes)。

您的Iframe url构造函数可能有问题。错误正在加载到Iframe中的youtube脚本中抛出。对于未随脚本动态添加的已编码html Iframe,也会引发相同的错误

<iframe width="390" height="315" src="http://www.youtube.com/embed/UNMLEZrukRU" frameborder="0" allowfullscreen></iframe>

仅HTML版本演示


仔细检查url是否缺少参数,否则我会检查youtube支持资源。该错误可以由Adobe的Flash Player团队修复,也可以由Google工程师修复——您现在应该忽略它。它连接到Flash Player安全设置和嵌入Youtube页面的SWF文件。问题已经解决了,而且还有一个问题

当我在Firefox16.0.2中停用Flash Player时,错误消息消失。检查注释#37:

值得一提的是,当任何flash文件, 即使是在中没有actionscript调用(ExternalInterface等)的 它们被加载到页面域所在页面上的iframe中 而iframe域则不同。这意味着iframe 问题是在实际存在跨域情况时产生的 地点。然而,还不完全清楚是否真的有 试图成为应阻止的跨域调用,并且 错误被排除了

因为flash SWF本身并没有试图调用它来做什么 “Location.toString”,与页面上的javascript无关 做这件事,唯一的选择就是闪光灯本身 插件本身(9.0.124是我正在测试的)正试图使 调用父窗口/顶部窗口来执行Location.toString()

当bug被标记为已解决时,附加的测试用例会在最新的Firefox版本中(在Firebug控制台或Firefox错误控制台窗口中)生成相同的错误消息

更新:
这个bug已经被提交到Adobe的旧bug数据库中:(你需要一个帐户来查看bug的详细信息)。bug关闭时的最后一条评论:

在Firefox 4和5上使用最新的Flash Player 10.3.181.34进行测试,没有 这样的异常被抛出。那么这个bug可能已经被修复了,对吧?如果 如果您仍然遇到此问题,请在我们的新错误系统中提交错误 并在新bug中添加与此相关的链接 JIRA报告原件。我们很高兴在新的一年里跟进你的报告 错误系统


忽略该错误,它与代码无关。只是一个浏览器错误。

不要因为这个错误与您的代码没有直接关系而忽略它

它似乎发生在嵌入初始隐藏时


只需将
?html5=1
添加到嵌入url即可。IE8仍将采用flash版本。或者使用Youtube api加载视频。

您使用的是哪种版本的Firefox和Firebug?当我在Chrome中打开演示文件时,Chrome中的JS控制台也会显示一条错误消息:“不安全的JavaScript试图从带有URL的帧访问带有URL的帧。域、协议和端口必须匹配。”Vimeo用户在iFrame中嵌入Vimeo时也出现了同样的错误:关于如何处理这个问题,还有一些其他问题:,。我在网页中嵌入facebook视频时也遇到了同样的问题。这就解释了为什么JavaScript错误没有显示行号,如果是Flash播放器造成的问题。bugzilla中的日期确实令人困惑。其报告于2008年,最后一次修改于2009年。该错误的状态已解决,并且在一段时间内该错误下没有任何评论。BugZilla票证已在两个新票证下重新打开:任何查看旧票证链接的人都将看到它已关闭/已“修复”,但向下滚动到评论中以获取有关它的更多信息。这修复了我的问题。谢谢你的支持。Wtf是所有Adobe工程师和IBM BS在上面“接受”的答案中发布的报告?可能是因为上面不是一个包罗万象的修复程序,而接受的答案表明这是一个源于您无法控制的地方的错误?这不是BS,当它是100%相关的票证,有接受的错误报告存档,这些人认为这是他们的错。+1改进我的编程哲学(“不要忽略这个错误,因为它没有直接关系到您的代码。”)这并没有解决我的问题。即使添加了itEr,我仍然会遇到同样的错误,不,这不仅仅是一个浏览器错误。
$("div.yturl").each(function(){
    var regex = /(\?v=|\&v=|\/\d\/|\/embed\/|\/v\/|\.be\/)([a-zA-Z0-9\-\_]+)/;
    var youtubeurl = $(this).text();
    var regexyoutubeurl = youtubeurl.match(regex);
    if (regexyoutubeurl) 
    {
         $(this).html("<iframe width=\"390\" height=\"315\" src=\"http://www.youtube.com/embed/"+regexyoutubeurl[2]+"\" frameborder=\"0\" allowfullscreen></iframe>");
    }
});
<iframe width="390" height="315" src="http://www.youtube.com/embed/UNMLEZrukRU" frameborder="0" allowfullscreen></iframe>