遇到问题,不知道如何给ClickSimMove func公开的ClickSimClick函数参数(它返回带有2个值的数组)。
下面的代码表示在setTimeout上未定义crd。
var crd = plugin().ClickSimMove();
setTimeout("plugin().ClickSimClick(crd[0], crd[1])", 1000);
答案 0 :(得分:2)
传递函数,而不是字符串:
var crd = plugin().ClickSimMove();
setTimeout(function() {
plugin().ClickSimClick(crd[0], crd[1]);
}, 1000);
当您传递一个字符串时,它会在全局范围内与eval
进行评估,从而失去对局部变量的所有访问权限。匿名函数允许您引用范围内的任何变量。
答案 1 :(得分:1)
var crd = plugin().ClickSimMove();
setTimeout(function(){
plugin().ClickSimClick(crd[0], crd[1]);
}, 1e3);
尽可能避免向setTimeout
/ setInterval
发送字符串 - 请改用匿名函数。特别是如果你发现你自己连接变量来制作那个字符串,你可以通过某种注入或格式错误的组件很快地遇到麻烦。