我正在使用UIWebView
來加載URL。UIWebView:我可以禁用任何網頁內的javascript alert()嗎?
在該網頁的頁面中,它使用alert("whatever msg")
作爲JavaScript。我的UIWebView
會彈出一個窗口並顯示警報消息。
有沒有辦法禁用這種彈出式窗口或JavaScript警報窗口?
我正在使用UIWebView
來加載URL。UIWebView:我可以禁用任何網頁內的javascript alert()嗎?
在該網頁的頁面中,它使用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
以登錄到控制檯(用於調試目的),或者您可以在頁面上呈現它(使用lightbox或類似的東西)。
是的,這也適用,謝謝 – Jack 2010-08-03 20:44:37
沒問題。 pop850的答案可能是你想要接受的,因爲它直接解決了你的問題。 – 2010-08-03 20:46:24
從我的角度來看,這個答案更加優雅地解決了這個問題,因爲'var a = null; a();'是一個JavaScript運行時錯誤。 – LordTwaroog 2013-01-18 15:25:33
由於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
非常有幫助的,這是工作。 我已經提到過,我必須將此消息放入webViewDidStartLoad委託方法中,僅用於其他可能想知道的人 – Jack 2010-08-03 20:44:18
由於顯示警報的JS在完成頁面呈現之前已執行,所以這對我無效。我結束了在本機級別阻止它:http://stackoverflow.com/a/21698251/154915 – ABeanSits 2014-02-11 09:48:38
即使把它放在webViewDidStartLoad不起作用,要麼 – onmyway133 2014-02-19 07:13:22