Why can't I close or dismiss a Javascript alert in UIWebView?

后端 未结 1 731
名媛妹妹
名媛妹妹 2021-01-03 05:33

Situation: I invoke a Javascript alert through the UIWebView method stringByEvaluatingJavaScriptFromString: like this

相关标签:
1条回答
  • 2021-01-03 06:02

    This question gave me the most insight to the problem...

    Deadlock with GCD and webView

    The gist is that the thread handling the JS from the stringByEvaluatingJavaScriptFromString: method and the thread handling the iOS alert view are probably blocking each other, making the "Close" button unresponsive.

    My workaround is to defer the JS alert with a setTimeout, something like this...

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

    To avoid any risk of deadlock, it might be better to have the UIWebView trigger an UIAlertView rather than rely on UIWebView to handle the JS alert. The workaround above would be suitable for most debugging purposes though.

    0 讨论(0)
提交回复
热议问题