美文网首页
关于 WKWebView JS代码弹出的alert 不显示问题

关于 WKWebView JS代码弹出的alert 不显示问题

作者: 思绪飘零ing | 来源:发表于2018-10-22 11:27 被阅读0次

    ios 在使用WKWebView 加载html 的时候 JS弹出alert 不显示 的问题是 需要我们 ios 实现代理方法 自己手动弹出 alert 的  JS 弹出alert 一共三种 1 只有一个 按钮的  2 两个按钮 的 同意 取消  3 有一个 输入框的 alert 一个按钮 .  

    1.

    - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void(^)(void))completionHandler{

        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示"message:message?:@"" preferredStyle:UIAlertControllerStyleAlert];

        [alertController addAction:([UIAlertAction actionWithTitle:@"确认"style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

            completionHandler();

        }])];

        [self presentViewController:alertController animated:YES completion:nil];

    }

    2. 两个按钮的 根据 调用block  返回 yes  或者 no 来确定是 点击了 取消按钮还是 同意 按钮 

    - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void(^)(BOOL))completionHandler{

        //    DLOG(@"msg = %@ frmae = %@",message,frame);UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示"message:message?:@"" preferredStyle:UIAlertControllerStyleAlert];

        [alertController addAction:([UIAlertAction actionWithTitle:@"取消"style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

            completionHandler(NO);

        }])];

        [alertController addAction:([UIAlertAction actionWithTitle:@"确认"style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

            completionHandler(YES);

        }])];

        [self presentViewController:alertController animated:YES completion:nil];

    }

    3. 输入框 的alert  点完成的时候  回调回去输入框文字 就可以消失了

    - (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void(^)(NSString * _Nullable))completionHandler{

        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:prompt message:@"" preferredStyle:UIAlertControllerStyleAlert];

        [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {

            textField.text = defaultText;

        }];

        [alertController addAction:([UIAlertAction actionWithTitle:@"完成"style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

            completionHandler(alertController.textFields[0].text?:@"");

        }])];

    [self presentViewController:alertController animated:YES completion:nil];

    }

    转发链接  https://www.cnblogs.com/n1ckyxu/p/5587722.html

    相关文章

      网友评论

          本文标题:关于 WKWebView JS代码弹出的alert 不显示问题

          本文链接:https://www.haomeiwen.com/subject/kknwzftx.html