![](/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.