gpt4 book ai didi

javascript - evalInSandbox 在 Firefox 38 中找不到函数

转载 作者:行者123 更新时间:2023-12-03 10:06:56 27 4
gpt4 key购买 nike

我使用 Components.utils.evalInSandbox 在我的 firefox 扩展中执行 js 函数。但是当我将firefox升级到38版本后,这个api失败了。

老是报错“*** js函数未定义”,看来网页上没有这样的js函数。然而,现实情况是js函数只是在网页上。我可以从网络控制台执行它。

我在 MDN 中没有发现这个 api 已过时,那么这个 api 有什么问题呢?

var s = Components.utils.Sandbox(document.defaultView.wrappedJSObject);
s.window = document.defaultView.wrappedJSObject;
s.document = document;
s.jsFunctionResult = null;
var javascript = "jsFunctionResult = JSFunctionName(arg1, arg2);";
Components.utils.evalInSandbox("with(window){" + javascript + "}", s);

我尝试执行警报,它还显示“警报未定义”。

最佳答案

如果我没看错的话,您正在创建一个与文档具有相同安全主体但全局范围为空的沙箱,因此 JSFunctionName() 在沙箱的全局范围内将不可用.

我想 with() 应该可以解决这个问题,但也许它不能跨隔间边界工作。尝试将其调用为 window.wrappedJSObject.JSFunctionName()

关于javascript - evalInSandbox 在 Firefox 38 中找不到函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30318403/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com