0

遇到问题,不知道如何给 ClickSimClick 函数公开的 ClickSimClick 函数参数(它返回具有 2 个值的数组)。

下面的代码表明 crd 在 setTimeout 上未定义。

var crd = plugin().ClickSimMove();
setTimeout("plugin().ClickSimClick(crd[0], crd[1])", 1000);
4

2 回答 2

2

传递一个函数,而不是一个字符串:

var crd = plugin().ClickSimMove();
setTimeout(function() {
    plugin().ClickSimClick(crd[0], crd[1]);
}, 1000);

当您传递一个字符串时,它会像eval在全局范围内一样被评估,失去对局部变量的所有访问权限。匿名函数允许您引用范围内的任何变量。

于 2013-04-07T02:13:14.447 回答
1
var crd = plugin().ClickSimMove();
setTimeout(function(){
  plugin().ClickSimClick(crd[0], crd[1]);
}, 1e3);

尽可能避免将字符串发送到setTimeout/ --setInterval使用匿名函数。特别是如果您发现自己连接变量来创建该字符串,您可能会很快遇到某种注入或格式错误的组件的麻烦。

于 2013-04-07T02:13:18.130 回答