如何从函数内部检索有条件设置的变量?

时间:2012-02-27 14:22:50

标签: javascript greasemonkey

如何从greasemonkey解析的网页中的函数内部检索条件变量?

这样的事情:

var myglobal = 5;

function myfunc() {
    myglobal = myglobal -1;
    if (myglobal == -1) {
        var this1 = 'Test';
        document.getElementById("mybutton").href = this1;
    }
}

在这种情况下,我想直接阅读'this1'中的内容,或者修改'myglobal',调用'myfunc'并以某种方式从'mybutton'获取href的值...任何想法?

1 个答案:

答案 0 :(得分:1)

您通常无法从像这样的范围之外获取变量值,但在这种情况下您可能不需要。

  

“myfunc是一个计数器,我想跳过它,否则mybutton.href将不会被设置。”

根据示例代码,您可以通过使用:

来欺骗该计时器
unsafeWindow.myglobal = 0;

(事实上,我在一个非常误导的训练网站上使用这种精确的技术。)


要进一步回答所述问题,您无法从此范围内获取动态值,但初始状态可能已足够,因为它似乎适用于此问题。

因此,您可以获取myfunc()代码并使用正则表达式解析它以获得所需的值:

var theFunc     = unsafeWindow.myfunc.toString ();
var desiredHref = theFunc.match (/var\s+this1\s*=\s*["']([^"']+)["']/);
if (desiredHref.length > 1) {
    // Found!
    desiredHref = desiredHref[1];
}