zoukankan      html  css  js  c++  java
  • WKWebView和JS交互

     // 1.WKWebView的配置
            WKUserContentController *userContentController = [[WKUserContentController alloc] init];
            [userContentController addScriptMessageHandler:self name:@"myName"];
            _wkConfig = [[WKWebViewConfiguration alloc] init];
            _wkConfig.userContentController = userContentController;
            _wkwebView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:_wkConfig];

    // 2.iOS 8 引入WKWebViewWKWebView 不支持JavaScriptCore的方式但提供message handler的方式为JavaScript 与Objective-C 通信.

    Objective-C 中使用WKWebView的以下方法调用JavaScript:

    - (void)evaluateJavaScript:(NSString *)javaScriptString

             completionHandler:(void (^)(id, NSError *))completionHandler

    如果JavaScript 代码出错, 可以在completionHandler 进行处理.

     [_wkwebView evaluateJavaScript:@"onPayComplete(1)" completionHandler:nil];// OC调用JS函数,可传参数

    //3. WKScriptMessageHandler protocol?

    - (void)userContentController:(WKUserContentController *)userContentController

        didReceiveScriptMessage:(WKScriptMessage *)message

    {

        NSLog(@"Message: %@", message.body);

    }

    // 4.在JavaScript 将信息发给Objective-C:

    // window.webkit.messageHandlers.<name>.postMessage();?

     

    function postMyMessage()? {?

        var message = { 'message' : 'Hello, World!', 'numbers' : [ 1, 2, 3 ] };?

        window.webkit.messageHandlers.myName.postMessage(message);?

    }

     

     

  • 相关阅读:
    mysql 注意事项 PreparedStatement 对比 statement
    Dbutils commons-dbutils-1.3
    C3P0 mysql 5.7
    servlet-应用mysql-1
    javabean 用integer 而不是int
    servlet-1
    servlet 路径 编码 问题
    mac tomcat 9.0
    case end 的用法
    自定义抛出异常
  • 原文地址:https://www.cnblogs.com/MJP334414/p/5945312.html
Copyright © 2011-2022 走看看