2016-12-14 5 views
0

私は思っていた - 実行org.eclipse.swt.browser.Browserメソッドを呼び出すときに、return booleanがどのように決定されるかSWTブラウザが実行されたときにJavaScriptが「成功しましたか?

  • javaScriptの実行はいつ成功したと考えられますか?
  • 特に、非同期関数をいくつか起動して応答を待つとどうなりますか?
  • ブラウザはコールバックを待機しますか?
  • 空のコールスタックに基づいており、エラーは発生していませんか?

ありがとうございます!

編集:
私はちょうど確認:コールバックは私の知る限り、ソースコードで掘りから言うことができるように

答えて

0

と呼ばれるようにするためにブラウザが待機していない、結果は次のいずれかの方法により決定されます:

  • のFirefox:JS_EvaluateScriptForPrincipals

    スクリプトがコンパイルされ、正常に実行されると、* rvalには、SCRの最後に処理-実行式文から値を受け取り、 ipt、JS_EvaluateScriptForPrincipalsまたはJS_EvaluateUCScriptForPrincipalsはJS_TRUEを返します。それ以外の場合はJS_FALSEを返し、* rvalに残っている値は未定義です。

  • のWebKit:JSEvaluateScript

    例外がスローされた場合、スクリプト、またはNULLを評価した値。

は、だから、エラーがない場合は、trueが返されます、のように聞こえます。


限り、あなたの質問の非同期部分に関しては、Browserは、非同期タスクの実行を待ちません。しかし、あなたができることは、BrowserFunctionthis exampleのように)を定義し、非同期タスクが完了したらJavaScriptからそのメソッドを呼び出します。

+0

まずはお返事ありがとうございます。 ここで私の問題は同じ "成功して実行する"というもので、成功とみなされるものは指定されていません。 関数を非同期に呼び出すと(setTimeoutなど)、スクリプトは実行を継続し、指定された時間が経過してsetTimeout関数に渡されたコールバックが実行されるまでコールスタックは空になります。 私の質問です:ブラウザはこのコールバックを待つか、スクリプトの実行が終了したら正常に実行されたと教えてくれますか? – chris

+0

@chrisただ、非同期タスクが失敗した場合にどうなるか試してみてください。私の推測では、非同期呼び出しを送信した後に戻ってくるため、「true」を返すことになりますが、間違っている可能性があります。 – Baz

+0

私はちょうどチェックしました:ブラウザはコールバックが呼び出されるのを待つことはありません – chris

関連する問題