【发布时间】:2012-09-03 13:32:48
【问题描述】:
根据this question,当我们设置window.location时,javascript会“停止”执行或者变成竞态条件。
有时我们需要在 WebView 中多次触发 window.location = SOMESCH://xxx 以将“通知”发送回我们的应用。例如设置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 将停止执行(尽管我们通过在 webView:shouldStartLoadWithRequest:navigationType: 中返回 NO 来停止应用程序中的重定向)。
我觉得有趣的是,PhoneGap 通过使用调度队列使这成为可能,但我仍然没有弄清楚它为什么会起作用,有人知道诀窍吗??
顺便说一句,有没有一种简单的方法可以在设置位置后“恢复”执行?会比使用操作队列好很多。
【问题讨论】:
标签: javascript ios cordova uiwebview webview