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

时间:2012-10-27 13:30:46

标签: javascript jquery youtube

我在FireBug中有此代码和此错误:

  

错误:访问属性'toString'

的权限被拒绝

如何解决此错误?

HTML:

<div class="yturl">http://www.youtube.com/watch?v=UNMLEZrukRU</div>

JS:

$("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>");
    }
});

DEMO: http://jsfiddle.net/9e48p/

5 个答案:

答案 0 :(得分:67)

错误可以由Adobe的Flash Player团队或Google工程师修复 - 您现在应该忽略它。它连接到Flash Player安全设置和嵌入Youtube页面的SWF文件。问题是reported in the past by IBM,并且还有一个Mozilla Bugzilla entry

当我在Firefox 16.0.2中停用Flash Player时,错误消息消失。查看评论#37:https://bugzilla.mozilla.org/show_bug.cgi?id=434522#c37

  

对于它的价值,我发现任何 flash文件时会发生此错误,   甚至那些没有动作脚本调用(ExternalInterface等)的   它们完全被加载到页面域的页面上的iframe中   和iframe域不同。这意味着iframe   实际上存在跨域情况时会导致问题   地点。但是,实际上并不完全清楚   尝试成为应该被阻止的跨域调用   错误。

     

因为闪存SWF本身没有尝试调用它   “Location.toString”,它与页面上的javascript无关   做到这一点,唯一的选择就是关于闪光灯的一些东西   插件本身(我正在测试的是9.0.124)正试图制作   调用父/顶窗口来执行Location.toString()。

虽然错误标记为已解决,但附加的测试用例https://bug434522.bugzilla.mozilla.org/attachment.cgi?id=321956会在最新的Firefox版本中生成相同的错误消息(在Firebug控制台或Firefox错误控制台窗口中)。

<强>更新
该错误已经在旧的错误数据库中提交给Adobe:FP-561 "Location.toString" uncaught (security) exception caused by improper Flash plugin behavior(您需要一个帐户来查看错误详细信息)。错误关闭时的最后评论:

  

在Firefox 4和5上使用最新的Flash Player 10.3.181.34进行测试,没有   抛出了这样的例外。所以bug可能已经修复了,对吧?如果   您仍然遇到此问题,请在我们的新错误系统中提交错误   https://bugbase.adobe.com/并在新bug中添加一个链接   原始JIRA报告。我们很乐意在新的报道中跟进您的报告   错误系统。

答案 1 :(得分:48)

请勿忽略此错误,因为它与您的代码无直接关系。

当您的嵌入被初始隐藏时,似乎会发生这种情况。

只需将?html5=1添加到您的嵌入网址即可。 IE8仍将采用Flash版本。或使用Youtube api加载您的视频。

答案 2 :(得分:2)

您的Iframe网址构造函数可能存在问题。在iframe中加载的youtube脚本中引发了错误。使用未使用脚本

动态添加的带编码的html Iframe会引发同样的错误
<iframe width="390" height="315" src="http://www.youtube.com/embed/UNMLEZrukRU" frameborder="0" allowfullscreen></iframe>

仅限HTML版演示http://jsfiddle.net/Lgt5f/

仔细检查网址是否缺少参数,否则我会查看youtube支持资源

答案 3 :(得分:1)

该问题可能是由于无法正常使用的扩展程序引起的。

使用安全模式启动Firefox以解决Firefox问题以检查其中一个扩展或硬件加速是否导致问题(切换到DEFAULT主题:Firefox /工具&gt;附加组件&gt;外观/主题)。< / p>

答案 4 :(得分:0)

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