编程语言
首页 > 编程语言> > javascript – 我可以访问用户脚本中的匿名函数变量吗?

javascript – 我可以访问用户脚本中的匿名函数变量吗?

作者:互联网

我正在寻找用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?不一样!

解决方法:

是!
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脚本中仍然没有好办法做这种事情.

如果有问题的JS的脚本是外部的,那么in Chrome, you can use beforeload to block it.然后注入你自己的代码 – 修改为公开该私有变量.

标签:javascript,anonymous-function,userscripts
来源: https://codeday.me/bug/20190703/1367186.html