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

Joh*_*com 43 javascript youtube jquery

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

错误:拒绝访问属性'toString'的权限

我该如何解决这个错误?

HTML:

<div class="yturl">http://www.youtube.com/watch?v=UNMLEZrukRU</div>
Run Code Online (Sandbox Code Playgroud)

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>");
    }
});
Run Code Online (Sandbox Code Playgroud)

演示: http ://jsfiddle.net/9e48p/

raj*_*ter 67

错误可以由Adobe的Flash Player团队或Google工程师修复 - 您现在应该忽略它.它连接到Flash Player安全设置和嵌入Youtube页面的SWF文件.IBM过去报告过这个问题,并且还有一个Mozilla Bugzilla条目.

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

对于它的价值,我看到这个错误发生在任何 flash文件,甚至那些根本没有actionscript调用(ExternalInterface等)的文件被加载到页面域和iframe域的页面上的iframe中是不同的.这意味着iframe问题是在实际存在跨域情况时引起的.但是,目前还不完全清楚是否真的试图成为一个应该被阻止并且出错的跨域调用.

因为闪存SWF本身没有尝试调用"Location.toString",并且它没有关于页面上的javascript做什么,唯一的选择就是有一些关于flash插件本身的东西(9.0.124是什么我正在测试,它正试图调用父/顶窗口来做Location.toString().

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

更新:
该错误已经在旧的错误数据库中提交给Adobe:FP-561"Location.toString"未被捕获(安全)异常由Flash插件行为不当引起(您需要一个帐户来查看错误详细信息).错误关闭时的最后评论:

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

  • 这可以解释为什么没有为JavaScript错误显示行号,如果Flash Player导致问题. (5认同)
  • BugZilla门票已经在两张新门票下重新开放:[#385676](https://bugzilla.mozilla.org/show_bug.cgi?id=385676)和[#1015700](https://bugzilla.mozilla.org/ show_bug.cgi?id = 1015700)任何查看旧票证链接的人都会看到它已关闭/"已修复",但向下滚动到评论中以获取更多信息. (2认同)

小智 48

不要忽略此错误只是因为它与您的代码没有直接关系.

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

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

  • 也许是因为以上不是一个全能的解决方案,并且接受的答案显示这是一个源自你无法控制的地方的错误?当它与票证100%相关时,它不是BS,因为这些人接受了错误报告并被这些人认可为他们的错. (2认同)