Ответ 1
Добавьте это после того, как ваш веб-просмотр загрузил его содержимое
[MyWebView stringByEvaluatingJavaScriptFromString:@"window.alert=null;"];
Я использую UIWebView
для загрузки URL-адреса.
Внутри страницы этого URL-адреса он использует alert("whatever msg")
как JavaScript. Мой UIWebView
откроет окно и покажет это предупреждающее сообщение.
Есть ли способ отключить это всплывающее окно или окно предупреждения JavaScript?
Добавьте это после того, как ваш веб-просмотр загрузил его содержимое
[MyWebView stringByEvaluatingJavaScriptFromString:@"window.alert=null;"];
Вы можете привязать window.alert
к другой функции. Итак:
window.alert = function() {
//does nothing so effectively "disables" alert
};
Убедитесь, что вы делаете это, прежде чем вы вызываете какие-либо предупреждения. Оптимальная вещь об этом заключается в том, что вы можете настроить способ отображения сообщений пользователю. Таким образом, вы можете переопределить window.alert
для входа в консоль (для целей отладки) или вы можете отобразить ее на странице (с помощью лайтбокса или чего-то подобного).
Так как a UIWebView
переводит все предупреждения Javascript в native UIAlertViews
, довольно просто заблокировать его на родном конце. В UIAlertView.h
существует только один общедоступный метод для отображения предупреждения, которое удобно назвать: - (void)show;
.
@interface UIAlertView (Blocker)
@end
#import "UIAlertView+Blocker.h"
@implementation UIAlertView (Blocker)
- (void)show {
return;
}
@end
Здесь вы можете найти ответ: fooobar.com/questions/340223/...
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)