根据this question,当我们设置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 通过使用调度队列使这成为可能,但我仍然没有弄清楚它为什么起作用,有人知道诀窍吗?
顺便说一句,有没有一种简单的方法可以在设置位置后“恢复”执行?这将比使用操作队列好得多。