zoukankan      html  css  js  c++  java
  • 利用WKWebView实现js与OC交互注意事项

    最近在写一些关于wkwebview的一些代码,发现了几点心得,记录一下。

    1.js调用OC

    我是利用wkwebview进行的开发实现,主要代码有三部分

    1.向config注入OC对象

     [config.userContentController addScriptMessageHandler:self name:@"YHModel" ];
    

    2.js中书写调用方法:

    window.webkit.messageHandlers.YHModel.postMessage({
    			height: $("html").height()
    });
    

    3.完成OC回调方法

    //js > OC
    - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{
        if ([message.name isEqualToString:@"YHModel"]) {
            CGFloat height = [[message.body valueForKey:@"height"] floatValue];
        }
    }
    

    2.OC调用js

    同样是利用wkwebview中的代码,实现起来分为两部分:

    1.OC中代码

     [webView evaluateJavaScript:@"compeleteFlag=true" completionHandler:nil];
    

    2.js中代码

    var compeleteFlag = false;
    var timeintervalFunction = setInterval(function() {
    var widthValue = $("#progross").width();
    $("#progross").width(widthValue + space);
        if(widthValue >= $("#progrossPart").width() || compeleteFlag) {     
              $("#progross").width($("#progrossPart").width());
              clearInterval(timeintervalFunction);
              $("#progrossPart").fadeOut();
           }
    }, 1000);
    

    应当注意的是:

    1.js回调OC时,应判断所获取的值是不是真实存在。
    2.OC调用js代码时应该保证,js代码处于全局位置或者能够确定代码所处位置,正确认识其层级关系。

       
       
       

    友情链接:

    技术博客        简书主页

  • 相关阅读:
    JQuery MultiSelect(左右选择框)
    jquery隐藏table表格的某一列
    JS刷新页面的几种方法
    jQuery对select操作小结
    更新数据前jquery如何填充数据到表单域中
    hibernate中load和get方法的区别
    java项目常用 BaseDao BaseService
    js判断360浏览器 兼容模式IE版本
    vue 文本比较插件
    vue问题总结
  • 原文地址:https://www.cnblogs.com/tig666666/p/8600724.html
Copyright © 2011-2022 走看看