情况:我通过这样的alert
方法UIWebView
调用Javascript stringByEvaluatingJavaScriptFromString:
......
[myWebView stringByEvaluatingJavaScriptFromString:@"alert('FOOBAR');"];
问题: iOS会显示一条提示,说明" FOOBAR"正如预期的那样,但是关注"关闭"按钮不会解除警报。
为什么我无法关闭Javascript警报?我如何让它关闭?
答案 0 :(得分:8)
这个问题让我对这个问题有了最深入的了解......
要点是从stringByEvaluatingJavaScriptFromString:
方法处理JS的线程和处理iOS警报视图的线程可能相互阻塞,使“关闭”按钮无响应。
我的解决方法是将JS alert
推迟到setTimeout
,就像这样......
NSString *jsMyAlert = @"setTimeout(function(){alert('FOOBAR');}, 1);";
[myWebView stringByEvaluatingJavaScriptFromString:jsMyAlert];
为了避免任何死锁风险,最好让UIWebView
触发UIAlertView
而不是依靠UIWebView
来处理JS alert
。上面的解决方法适用于大多数调试目的。