javascript-将youtube中的url替换为嵌入代码-错误:拒绝访问属性“ toString”的权限

我有此代码和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>");
    }
});

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

JohnMalcom asked 2020-08-01T08:45:59Z
5个解决方案
67 votes

该错误可以由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 问题实际上是在以下情况下引起的: 地点。 但是,尚不清楚是否真的存在 试图成为应避免的跨域调用,并且 错误了。

因为Flash 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”未捕获(安全)异常是由于Flash插件行为不正确引起的(您需要一个帐户来查看错误详细信息)。 关闭该错误时的最后评论:

已在Firefox 4和5上使用最新的Flash Player 10.3.181.34测试,否 这样的异常被抛出。 因此,该错误可能已得到解决,对吧? 如果 您仍然遇到此问题,请在我们的新错误系统中提交错误 [https://bugbase.adobe.com/]并在新错误中添加一个指向此链接 JIRA原始报告。 我们很高兴在新版本中跟踪您的报告 错误系统。

raju-bitter answered 2020-08-01T08:46:55Z
48 votes

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

它似乎是在您的嵌入最初被隐藏时发生的。

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

air answered 2020-08-01T08:47:23Z
2 votes

您的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支持资源

charlietfl answered 2020-08-01T08:47:53Z
1 votes

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

在“使用安全模式对Firefox问题进行故障排除”中启动Firefox,以检查扩展程序之一或硬件加速是否导致了问题(切换至DEFAULT主题:Firefox /工具>附加组件>外观/主题)。

NullPoiиteя answered 2020-08-01T08:48:17Z
0 votes

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

Alvarez answered 2020-08-01T08:48:37Z
translate from https://stackoverflow.com:/questions/13100611/replace-url-from-youtube-to-embed-code-error-permission-denied-to-access-prop