繁体   English   中英

UIWebView:我可以在任何网页中禁用javascript alert()吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM