为什么我不能closures或closuresUIWebView中的Javascript警报?

情况:我通过UIWebView方法stringByEvaluatingJavaScriptFromString:调用一个Javascript alert stringByEvaluatingJavaScriptFromString:像这样…

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

问题: iOS按预期显示“FOOBAR”的提醒,但点击“closures”button不会解除提醒。

为什么我不能closuresJavascript警报? 我如何把它closures?

这个问题给了我最深刻的问题

GCD和webView死锁

要点在于,处理来自stringByEvaluatingJavaScriptFromString:方法的JS的线程和处理iOS alert视图的线程可能彼此阻塞,使得“closures”button无响应。

我的解决方法是延迟JS alertsetTimeout ,像这样…

 NSString *jsMyAlert = @"setTimeout(function(){alert('FOOBAR');}, 1);"; [myWebView stringByEvaluatingJavaScriptFromString:jsMyAlert]; 

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