43

我在 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/

4

5 回答 5

67

该错误可以由 Adob​​e 的 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 文件,即使是那些根本没有动作脚本调用(ExternalInterface 等)的文件,被加载到页面域和 iframe 域的页面上的 iframe 中是不同的。这意味着当实际上存在跨域情况时会导致 iframe 问题。但是,尚不完全清楚是否真的试图进行跨域调用,应该阻止并出错。

因为 Flash SWF 本身试图调用来执行“Location.toString”并没有什么,页面上的 JavaScript 也没有什么,唯一的选择是 Flash 插件本身有一些东西(9.0.124 是什么我正在测试),它试图调用父/顶部窗口来执行 Location.toString()。

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

更新:
该错误也已在旧错误数据库中提交给 Adob​​e:FP-561“Location.toString”未捕获(安全)异常,由不正确的 Flash 插件行为引起(您需要一个帐户才能查看错误详细信息)。关闭错误时的最后一条评论:

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

于 2012-10-27T14:39:36.627 回答
48

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

当您的嵌入最初隐藏时,它似乎会发生。

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

于 2013-11-13T09:12:01.813 回答
2

您的 Iframe url 构造函数可能有问题。该错误是在加载到 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/

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

于 2012-10-27T13:51:53.770 回答
1

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

使用安全模式在 Firefox 问题疑难解答中启动 Firefox,以检查是否是某个扩展或硬件加速导致了问题(切换到默认主题:Firefox/工具 > 附加组件 > 外观/主题)。

于 2012-10-27T13:33:09.060 回答
-1

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

于 2012-10-27T20:58:35.773 回答