• 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>
    
    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) {
    	}) 
    })
    

      

  • 相关阅读:
    Spring MVC Ajax 嵌套表单数据的提交
    Spring MVC 过滤静态资源访问
    Spring MVC 页面跳转时传递参数
    IDEA Maven 三层架构 2、运行 springMVC
    IDEA Maven 三层架构 1、基本的Archetype 搭建
    EasyUI DataGrid 基于 Ajax 自定义取值(loadData)
    Spring MVC Ajax 复杂参数的批量传递
    Mybatis Sql片段的应用
    在 Tomcat 8 部署多端口项目
    自动升级的设计思路与实现
  • 原文地址:https://www.cnblogs.com/dontes/p/9567257.html
Copyright © 2020-2023  润新知