簡體   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