Javascript Firefox扩展:获取异常;访问属性的权限被拒绝href";用于在沙箱中运行的代码
我正在运行附加的代码作为我的firefox扩展。 当前,扩展所做的只是提醒浏览器当前所在页面(和iFrame)的当前位置。出于某种原因,在某些情况下,我在尝试通知该位置时会出现以下异常: 访问属性href的权限被拒绝 不幸的是,我无法理解代码工作的具体场景或页面以及引发异常的位置。Javascript Firefox扩展:获取异常;访问属性的权限被拒绝href";用于在沙箱中运行的代码,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,我正在运行附加的代码作为我的firefox扩展。 当前,扩展所做的只是提醒浏览器当前所在页面(和iFrame)的当前位置。出于某种原因,在某些情况下,我在尝试通知该位置时会出现以下异常: 访问属性href的权限被拒绝 不幸的是,我无法理解代码工作的具体场景或页面以及引发异常的位置。 有人遇到过这个吗? 谢谢 以下是browser.xul文件内容(不带HTML标记): 该异常必须是由于跨源违规。是的,正如@paa所说,该异常必须是跨源违规。但是,由于长方体的主体是以一种方式设置的,即沙盒应该始终具
有人遇到过这个吗? 谢谢 以下是browser.xul文件内容(不带HTML标记):
该异常必须是由于跨源违规。是的,正如@paa所说,该异常必须是跨源违规。但是,由于长方体的主体是以一种方式设置的,即沙盒应该始终具有其所评估的文档/窗口的相同主体(原点),因此这仍然很奇怪。您能否提供发生这种情况的选项卡的URI示例和/或发生这种情况的windows的URI示例(例如,直接从您的chrome代码中记录/alter doc.defaultView.location)?另外,你能详细介绍一下你最终想要达到的目标吗?正如@nmaier所说的,不应该有跨来源的违规行为,这才是真正的谜团。扩展的总体思路是,我阅读动态计算的代码(我发布的代码片段中没有显示),在代码中,我希望在执行某些操作之前检查当前位置。由于这是我从用户那里得到的一个错误,不幸的是,我没有特定的URI,这会发生在用户身上。我想知道你对如何找到可能导致此异常的场景有何想法,以便我可以重新创建它并进行调试。如果我必须猜测(而且你似乎希望我这么做),我会打赌非标准主体,例如about:甚至chrome:?,或webapp主体。另外,我还记得你不应该在沙箱上设置
\uuuu proto\uuuu
:PS:设置sb.window
应该没有必要(甚至可能是个问题)。sandboxPrototype
和window.window==window
这一事实已经暗示了这一点。同样适用于sb.文档
setTimeout(function() {
var appcontent = document.getElementById("appcontent");
if (appcontent) {
appcontent.addEventListener("DOMContentLoaded", function (aEvent) {
var doc = aEvent.originalTarget;
if (!(doc instanceof HTMLDocument)) {
// Validation.
return;
}
var sandbox = new Components.utils.Sandbox(doc.defaultView, {
'sandboxPrototype': doc.defaultView,
'wantXrays': true
});
sandbox.window = doc.defaultView;
sandbox.document = doc.defaultView.document;
sandbox.__proto__ = doc.defaultView;
sandbox.unsafeWindow = doc.defaultView.wrappedJSObject;
var strCode = "try { alert(window.location.href); } catch(e1) {alert(e1.message);}";
Components.utils.evalInSandbox(strCode, sandbox, "1.8");
}, true);
}
}, 1000);