![](/img/trans.png)
[英]Why can't I close or dismiss a Javascript alert in UIWebView?
[英]UIWebView: Can I disable the javascript alert() inside any web page?
我正在使用UIWebView
加载URL。
在该URL的页面内,它使用alert("whatever msg")
作为JavaScript。 我的UIWebView
将弹出一个窗口并显示该警报消息。
有没有办法禁用这种弹出窗口或JavaScript警报窗口?
在Web视图加载其内容后添加此项
[MyWebView stringByEvaluatingJavaScriptFromString:@"window.alert=null;"];
您可以将window.alert
绑定到另一个函数。 所以:
window.alert = function() {
//does nothing so effectively "disables" alert
};
确保在拨打任何警报之前执行此操作。 关于这一点的好处是你可以自定义向用户显示消息的方式。 因此,您可以覆盖window.alert
以登录到控制台(用于调试目的),或者您可以在页面上呈现它(使用灯箱或类似的东西)。
由于UIWebView
将所有Javascript警报转换为本机UIAlertViews
,因此在本机端阻止它是相当简单的。 查看UIAlertView.h
只有一种公共方法可以显示一个方便调用的警报: - (void)show;
。
@interface UIAlertView (Blocker)
@end
#import "UIAlertView+Blocker.h"
@implementation UIAlertView (Blocker)
- (void)show {
return;
}
@end
你可以在这里找到答案: https : //stackoverflow.com/a/21698251/2377378
let script = """
window.alert=window.confirm=window.prompt=function(n){},
[].slice.apply(document.querySelectorAll('iframe')).forEach(function(n){if(n.contentWindow != window){n.contentWindow.alert=n.contentWindow.confirm=n.contentWindow.prompt=function(n){}}})
"""
webView.evaluateJavaScript(script, completionHandler: nil)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.