0

問題が発生しました。ClickSimMove func によって公開された ClickSimClick 関数の引数にどのように与えることができるかわかりません (2 つの値を持つ配列を返します)。

以下のコードは、setTimeout で crd が未定義であることを示しています。

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 に答える