gpt4 book ai didi

ios - UIWebView 可以检测到 Javascript 对话框何时将要显示吗?

转载 作者:行者123 更新时间:2023-12-01 19:18:51 25 4
gpt4 key购买 nike

我是 iOS 开发新手。我有 Android 背景。

我想知道 UIWebView 是否可以检测何时将显示 Javascript 警报/确认/提示对话框? (类似于在 Web View 开始加载框架之前调用 UIWebViewDelegateshouldStartLoadWithRequest 方法。)

我正在寻找的 Android 等效项是 WebChromeClientonJSAlert(...)onJsConfirm(...)onJsPrompt(...) 方法,通过这些方法,应用程序可以决定是显示给定的对话框还是阻止它。

最佳答案

UIWebView 没有在将要显示 Javascript 警报时调用的方法。但是,您可以使用 shouldStartLoadWithRequest: 通知 UIWebView 有关警报的信息,然后决定是否显示它:

在 Javascript 中,当您想要调用警报时,请执行以下操作:

window.location.href = "alert://MESSAGE_TEXT";

在 UIWebView 的委托(delegate)中,您可以拦截该请求并决定是否要通过 javascript 调用警报:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

switch (navigationType) {
case UIWebViewNavigationTypeOther:
if ([[request.URL scheme] isEqualToString:@"alert"]) {
NSString *message = [request.URL host];
if (SHOULD_SHOW_ALERT) {
// the alert should be shown
[webView stringByEvaluatingJavaScriptFromString:@"showAlert()"];
} else {
// don't show the alert
// just do nothing
}

return NO;
}
break;
default:
//ignore
}
return YES;
}

我不知道您是否需要将消息文本发送到 UIWebView,但我将其包含在内,以便您可以了解如何将参数发送到 UIWebView。您可以在 URL 路径中添加更多参数。

显然,您必须将 SHOULD_SHOW_ALERT 与您自己的 if 子句交换,该子句决定是否显示警报,并且您必须将 showAlert() 函数添加到您的 Javascript .

关于ios - UIWebView 可以检测到 Javascript 对话框何时将要显示吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22990469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com