この質問によると、window.locationを設定すると、javascriptは実行を「停止」するか、競合状態になります。
window.location = SOMESCH://xxx
「通知」をアプリに送り返すために、WebView内で複数回起動する必要がある場合があります。たとえばwindow.location = myapp://loginButtonEnabled?e=1
、ユーザーが必要な情報を入力してログインを開始できることをアプリに通知するように設定します。このようなことをするのは不可能のようです:
function(){
window.location = myapp://loginButtonEnable?e=1;
window.location = myapp://hideHintView;
.....
window.location = myapp://theLastThing;
}
最後のものだけwindow.location = myapp://theLastThing
が起動され、Javascriptの実行が停止します(ただし、アプリでNOを返すことでリダイレクトを停止しましたwebView:shouldStartLoadWithRequest:navigationType:
)。
PhoneGapがディスパッチキューを使用してこれを可能にしたのは興味深いことですが、なぜそれが機能するのかまだわかりません。誰かがそのトリックを知っていますか?
ところで、場所を設定した後に実行を「再開」する簡単な方法はありますか?操作キューを使用するよりもはるかに優れています。