我正在寻找用usercript修改javascript游戏。
问题是所有游戏代码都包含一个像这样的匿名函数
(function () { "use strict";
var js = 'test';
})();
我可以使用我的用户脚本访问JS变量吗?
编辑:
另请参阅:How to alter this javascript with Greasemonkey?
这个问题与Is it possible to gain access to the closure of a function?不一样!
答案 0 :(得分:1)
不,您无法访问私有范围内的变量。
答案 1 :(得分:1)
是的! You can if you use the right browser (Firefox)。
在用户脚本中(在Firefox上),您可以重写页面的JS以便自己访问。另见"How to alter this javascript with Greasemonkey?"。
你的函数调用就像(对于内联脚本):
checkForBadJavascripts ( [
[false, /js = 'test'/, replaceTargetJavascript]
] );
function replaceTargetJavascript (scriptNode) {
var scriptSrc = scriptNode.textContent;
scriptSrc = scriptSrc.replace (
/js = 'test';/,
"js = 'test'; window.myJS = js;"
);
addJS_Node (scriptSrc);
}
然后您将访问变量,如:
console.log ("The var is: ", unsafeWindow.myJS);
唉,在 Chrome 用户脚本或Tampermonkey脚本中,仍然没有好办法做这种事情。
IF 有问题的JS的脚本是外部,然后是in Chrome, you can use beforeload
to block it。然后注入您自己的代码 - 修改后公开该私有变量。