如何从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的值...任何想法?
答案 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];
}