为什么我不能在UIWebView中关闭或驳回Javascript警报?
Why can't I close or dismiss a Javascript alert in UIWebView?
情况:我通过UIWebView
方法stringByEvaluatingJavaScriptFromString:
调用Javascript alert
,像这样…
[myWebView stringByEvaluatingJavaScriptFromString:@"alert('FOOBAR');"];
问题: iOS按预期显示提示"FOOBAR",但点击"Close"按钮并没有取消提示。
为什么我不能关闭Javascript警报?我怎么把它关起来?
这个问题让我对这个问题有了更深的了解。
GCD和webView死锁
要点是,从stringByEvaluatingJavaScriptFromString:
方法处理JS的线程和处理iOS警报视图的线程可能相互阻塞,使"关闭"按钮无响应。
我的解决方法是用setTimeout
推迟JS alert
,就像这样…
NSString *jsMyAlert = @"setTimeout(function(){alert('FOOBAR');}, 1);";
[myWebView stringByEvaluatingJavaScriptFromString:jsMyAlert];
为了避免任何死锁的风险,最好让UIWebView
触发UIAlertView
,而不是依赖UIWebView
来处理JS的alert
。上面的解决方法适用于大多数调试目的。
相关文章:
- 从Javascript警报中防止换行
- 我怎么能让jQuery对话框表现得像Javascript警报
- Servlet仅在单击JavaScript警报消息后重定向
- 背景图像前显示Javascript警报
- JavaScript警报适用于int,但不适用于string
- 页面显示前加载Javascript警报
- 如何在重定向到asp.net中单击按钮的下一页之前应用javascript警报
- 在ASP.NET中重定向之前的Javascript警报
- Xamarin iOS WKWebView显示JavaScript警报
- javascript警报框中的可单击链接
- 如何在asp.net中从javascript警报到文本框中获取值
- 如何使用 javascript 警报窗口显示验证消息
- 如何使Javascript警报代码全部在一行上
- 奇怪的 Javascript 警报输出
- 使用 C# 中的代码隐藏在单击按钮时创建 Javascript 警报
- 使用请求对象中可用的值打印 JavaScript 警报
- jstl-如何将表达式语言变量传递给javascript警报
- javaScript警报和提示框将我重定向到另一个页面,上面写着“;找不到文件”;
- 在哪里放置JavaScript警报覆盖,以便所有页面都可以使用它,而无需导入*.js
- 使用VBA显示javascript警报