• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

A界面为Webview,B界面扫描二维码后,返回A界面,直接弹出JS的Alert,Alert的确定没办法响应...

武飞扬头像
All_Be_Alright
帮助1

A界面为Webview,B界面扫描二维码后,返回A界面,直接弹出JS的Alert,Alert的"好"无法响应

学新通

网上的解释

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.

注意setimeout中的第一个参数必须是function  不能直接alert  否则还是会lock

解决办法

[webview performSelectorOnMainThread: @selector(stringByEvaluatingJavaScriptFromString:) withObject: jsString waitUntilDone: NO];

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbjgha
系列文章
更多 icon
同类精品
更多 icon
继续加载