根據this question,當我們設置window.location時,JavaScript將「停止」執行或變爲競態條件。PhoneGap如何在更改window.location/document.location後保持Javascript執行
有時我們需要在WebView內多次觸發window.location = SOMESCH://xxx
以將「通知」發送回我們的應用程序。例如設置window.location = myapp://loginButtonEnabled?e=1
告訴應用程序,用戶已經填寫了一些nessasary信息並可以開始登錄。這似乎是不可能做這樣的事情:
function(){
window.location = myapp://loginButtonEnable?e=1;
window.location = myapp://hideHintView;
.....
window.location = myapp://theLastThing;
}
只有最後window.location = myapp://theLastThing
將被解僱,然後使用Javascript的執行將停止(雖然我們在webView:shouldStartLoadWithRequest:navigationType:
不會回來,停在我們的應用程序重定向)。
我發現有趣的是,PhoneGap通過使用調度隊列使這成爲可能,但我仍然沒有弄清楚它爲什麼可以工作,任何人都知道這個技巧?
順便說一句,有沒有簡單的方法來設置位置後「恢復」執行?這比使用操作隊列要好得多。