• js与ios桥接使用WebViewJavascriptBridge简单理解


    https://github.com/marcuswestin/WebViewJavascriptBridge

    function setupWebViewJavascriptBridge(callback) {
        if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }
        if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
        window.WVJBCallbacks = [callback];
        var WVJBIframe = document.createElement('iframe');
        WVJBIframe.style.display = 'none';
        WVJBIframe.src = 'https://__bridge_loaded__';
        document.documentElement.appendChild(WVJBIframe);
        setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
    }
    Finally, call setupWebViewJavascriptBridge and then use the bridge to register handlers and call ObjC handlers:
    setupWebViewJavascriptBridge(function(bridge) {
        
        /* Initialize your app here */
    
        bridge.registerHandler('JS Echo', function(data, responseCallback) {
            console.log("JS Echo called with:", data)
            responseCallback(data)
        })
        bridge.callHandler('ObjC Echo', {'key':'value'}, function responseCallback(responseData) {
            console.log("JS received response:", responseData)
        })
    })

    github地址如上

    工作中用到了这个桥接,出现了很多问题,

    首先,初始化了这个函数之后,然后调用这个函数,调用ios端定义的handler或者js 注册自己的handler,

    但是好像不可以写多个该函数的调用,否则所有写的交互不生效。

    那么我如果想调用ios定义的多个函数,只能写在一个调用里,罗列多个

     bridge.registerHandler 

    bridge.callHandler来写了。
    目前还是出现了个别交互不生效的问题。

    registerHandler 就是在网页端定义一个函数,获取后端返回的相应参数,后端调用使用
    callHandler  就是在ios端定义一个函数,网页端调用,传过去相应参数。
     

    我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=dd4qxupt8clk
     
  • 相关阅读:
    SVN 使用学习记录
    jQuery 获取 URL信息
    JS扩展方法
    .Net 加密 哈希
    SQL Serverf 索引
    SQL Server索引
    SQL Server索引
    insert into select 多个表
    Mysql数据库自带四个数据库的解析
    转: MySQL5.7 ERROR 1142 (42000)问题
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/8780904.html
Copyright © 2020-2023  润新知