为什么我不能在UIWebView中关闭或关闭Javascript警报?

时间:2014-05-23 16:06:25

标签: javascript ios uiwebview

情况:我通过这样的alert方法UIWebView调用Javascript stringByEvaluatingJavaScriptFromString: ......

[myWebView stringByEvaluatingJavaScriptFromString:@"alert('FOOBAR');"];

问题: iOS会显示一条提示,说明" FOOBAR"正如预期的那样,但是关注"关闭"按钮不会解除警报。

为什么我无法关闭Javascript警报?我如何让它关闭?

1 个答案:

答案 0 :(得分:8)

这个问题让我对这个问题有了最深入的了解......

Deadlock with GCD and webView

要点是从stringByEvaluatingJavaScriptFromString:方法处理JS的线程和处理iOS警报视图的线程可能相互阻塞,使“关闭”按钮无响应。

我的解决方法是将JS alert推迟到setTimeout,就像这样......

NSString *jsMyAlert = @"setTimeout(function(){alert('FOOBAR');}, 1);";

[myWebView stringByEvaluatingJavaScriptFromString:jsMyAlert];

为了避免任何死锁风险,最好让UIWebView触发UIAlertView而不是依靠UIWebView来处理JS alert。上面的解决方法适用于大多数调试目的。