如何处理警报单击从UIWebview生成的警报的位置

How to handle alert click where alert generated from UIWebview .?

本文关键字:UIWebview 何处理 位置 单击 处理      更新时间:2023-09-26

我也用过这个:

@interface UIWebView (JavaScriptAlert)
 - (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame;
@end
@implementation UIWebView (JavaScriptAlert)
- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {
    UIAlertView *dialogue = [[UIAlertView alloc] initWithTitle:@"My Alert Title" message:message delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    [dialogue show];
}

你必须使用 UIAlertView 的委托

- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame {
    UIAlertView *dialogue = [[UIAlertView alloc] initWithTitle:@"My Alert Title" message:message delegate:self cancelButtonTitle:@"Okay" otherButtonTitles:nil];
    dialogue.tag = 1;
    [dialogue show];
}

-(void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (alertView.tag == 1) {
         if (buttonIndex == alertView.cancelButtonIndex) {
             //Do something here
         }
    }
}

您可以在 Javascript 中显示警报 - 这看起来与UIAlertView一模一样。然后在关闭警报后,将用户重定向到 Javascript 中的"someaction://"。在设备上,实现UIWebViewDelegatewebView:shouldStartLoadWithRequest:navigationType:,如下所示:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    if ([request.URL absolutePath] hasPrefix:@"someaction://"]) {
        // do what you want to do after the alert has been dismissed
    }
    return NO;
}