2010-08-03 43 views

回答

19

您的Web視圖後,添加此加載其內容

[MyWebView stringByEvaluatingJavaScriptFromString:@"window.alert=null;"]; 
+4

非常有幫助的,這是工作。 我已經提到過,我必須將此消息放入webViewDidStartLoad委託方法中,僅用於其他可能想知道的人 – Jack 2010-08-03 20:44:18

+1

由於顯示警報的JS在完成頁面呈現之前已執行,所以這對我無效。我結束了在本機級別阻止它:http://stackoverflow.com/a/21698251/154915 – ABeanSits 2014-02-11 09:48:38

+0

即使把它放在webViewDidStartLoad不起作用,要麼 – onmyway133 2014-02-19 07:13:22

12

可以綁定window.alert到另一個功能。所以:

window.alert = function() { 
    //does nothing so effectively "disables" alert 
}; 

請確保在調用任何警報之前執行此操作。整潔的事情是你可以自定義向用戶顯示消息的方式。因此,您可以覆蓋window.alert以登錄到控制檯(用於調試目的),或者您可以在頁面上呈現它(使用lightbox或類似的東西)。

+0

是的,這也適用,謝謝 – Jack 2010-08-03 20:44:37

+0

沒問題。 pop850的答案可能是你想要接受的,因爲它直接解決了你的問題。 – 2010-08-03 20:46:24

+4

從我的角度來看,這個答案更加優雅地解決了這個問題,因爲'var a = null; a();'是一個JavaScript運行時錯誤。 – LordTwaroog 2013-01-18 15:25:33

1

由於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

相關問題