zoukankan      html  css  js  c++  java
  • jsbrage——和app交互

     

     
    复制代码
    <html>
    <head>
        <meta content="text/html; charset=utf-8" http-equiv="content-type">
        <title>
            js调用java
        </title>
    </head>
    
    <body>
    <p>
        <div id="show"></div>
    </p>
    
    
    <p><input type="button" id="enter3" value="payInterface" onclick="payInterface();"/></p>
    
    </body>
    <script>
    
            function setupWebViewJavascriptBridge(callback) {
                if (window.WebViewJavascriptBridge) {
                    callback(WebViewJavascriptBridge)
                } else {
                    document.addEventListener(
                        'WebViewJavascriptBridgeReady'
                        , function() {
                            callback(WebViewJavascriptBridge)
                        },
                        false
                    );
                }
    
                if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
                window.WVJBCallbacks = [callback];
                var WVJBIframe = document.createElement('iframe');
                WVJBIframe.style.display = 'none';
                WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
                document.documentElement.appendChild(WVJBIframe);
                setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
            }
    
            //在改function 中添加原生调起js方法
            setupWebViewJavascriptBridge(function(bridge) {
    
                //注册原生调起方法
                //参数1: buttonjs 注册flag 供原生使用,要和原生统一
                //参数2: data  是原生传给js 的数据
                //参数3: responseCallback 是js 的回调,可以通过该方法给原生传数据
                bridge.registerHandler("getUserInfos",function(data,responseCallback){
    
                    document.getElementById("show").innerHTML = "buuton js" + data;
                    responseCallback("button js callback");
                });
    
    
                document.getElementById('enter3').onclick = function (e) {
                var data = "hello"
                //参数1: pay 注册flag 供原生使用,要和原生统一
                //参数2: 是调起原生时向原生传递的参数
                //参数3: 原生调用回调返回的数据
                bridge.callHandler('getBlogNameFromObjC',data,function(resp){
                        document.getElementById("show").innerHTML = "payInterface" + resp;
                    }
                 );
            }
            })
    </script>
    
    </html>
    
    复制代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    function connectWebViewJavascriptBridge (callback) {
        if (window.WebViewJavascriptBridge) {
            callback(WebViewJavascriptBridge)
        else {
            document.addEventListener( 'WebViewJavascriptBridgeReady' function() {
                callback(WebViewJavascriptBridge) }, false );
        }
    }
    connectWebViewJavascriptBridge (function(bridge) {
        bridge.registerHandler('JS Echo'function(data, responseCallback) {
            console.log("JS Echo called with:", data)
            responseCallback(data)
        })
        bridge.callHandler('oliveness', {}, function responseCallback(responseData) {
        })
    })
  • 相关阅读:
    nose测试中修改nose_html_reporting插件,使生成的html报告加入显示截图功能
    python selenium中等待元素出现及等待元素消失操作
    在python pydev中使用todo标注任务
    云存储命令行工具---libs3
    关于qt creator各种假死的问题
    小端存储转大端存储 & 大端存储转小端存储
    C++判断计算式是大端存储模式,还是小端存储模式
    请教网友:#pragma pack(push) #pragma pack(pop)无效
    sizeof 计算 struct 占字节数的方法总结
    const 变量在多个文件共享,如何验证两种不同的方式下,编译器是否会在多个文件下建立多个副本
  • 原文地址:https://www.cnblogs.com/hss-blog/p/9882248.html
Copyright © 2011-2022 走看看