为什么我不能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 alert
与setTimeout
,像这样…
NSString *jsMyAlert = @"setTimeout(function(){alert('FOOBAR');}, 1);"; [myWebView stringByEvaluatingJavaScriptFromString:jsMyAlert];
为了避免任何死锁的风险,最好让UIWebView
触发一个UIAlertView
而不是依靠UIWebView
来处理JS alert
。 上面的解决方法将适用于大多数debugging目的。