WebViewJavascriptBridge实现js与android和ios原生交互

1、实现原生与js交互

    <!-- 申明交互 这段代码固定必须有 -->
function setupWebViewJavascriptBridge(callback) {
    //android使用
    if (window.WebViewJavascriptBridge) {
        callback(window.WebViewJavascriptBridge)
    } else {
        document.addEventListener(
            'WebViewJavascriptBridgeReady'
            , function() {
                callback(window.WebViewJavascriptBridge)
            },
            false
        );
    }
    //ios使用
    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)
}
setupWebViewJavascriptBridge(function(bridge) {

//oc或android掉js
    bridge.registerHandler('result', function(data, responseCallback) {
        if(data.errorCode == null  || data.errorCode == "")
            window.location.href = "refresh.html?result=success";
        else
            window.location.href = "refresh.html?result=fail";
    });

    //js掉原生
    $(document).on('click', '#call', function() {
        bridge.callHandler('call', {'sessionId':$.cookie("sessionId")}, function(response) {
            //处理oc过来的回调
            var responseData = { 'Javascript Says':'Right back atcha!' };
            responseCallback(responseData);
        });
    });

});
<div>
   <a id = "call">跳转手机端 > </a>
</div>

参考:https://www.jianshu.com/p/e37ccf32cb5b

原文地址:http://blog.51cto.com/1385903/2104046

时间: 2024-08-29 08:47:44

WebViewJavascriptBridge实现js与android和ios原生交互的相关文章

JS调用Android、Ios原生控件

在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时,提高代码质量,实现两者在网页端代码的统一. 首先我们先看一下Ios调用JS的方法实现: //无参调用 function SwiftCallJs1(){} //有参调用 function SwiftCallJs2(name, message){} 紧接着我们看一下Android调用JS的方法实现: /

刮刮乐JS 兼容android和ios

修正了在Android下刮不动的bug (function(bodyStyle) { bodyStyle.mozUserSelect = 'none'; bodyStyle.webkitUserSelect = 'none'; var $canvas = $(".canvas"); var moveTime,canvasTop=$canvas.offset().top; $canvas.attr("data-flag","true"); var

配置试用NativeScript开发Android、iOS原生应用

第一次了解NativeScript为阅读CSDN文章<原生体验挡不住!Javascript开源跨平台框架NativeScript>. 介绍 NativeScript是一款使用JavaScript语言来构建跨平台原生移动应用的开源框架,支持iOS.Android和Windows Phone.且NativeScript的使用没有过多繁杂的要求,只需使用自己已经掌握的JavaScript和CSS技能就能开发出真正具有原生用户体验的移动应用. 作为免费开源项目的NativeScript,它的源码已经托

JS对于Android和IOS平台的点击响应的适配

综述 最近做项目的时候发现了一个非常奇怪的问题,就是对于click事件的响应.经过测试发现,对于IOS平台,直接监听click事件可能是没有响应的,而在Android和PC上则完全没有问题.所以通过获取设备信息实现了不同平台的不同监听. IOS监听 对于IOS设备,只监听click方法可能是没有响应的.解决方法就是监听 “touchend click”事件. 而对于Android和PC,则只监听click事件即可. 平台检测 我们利用userAgent来检测平台 1 2 3 4 5 6 7 8

JS&amp;iOS原生交互

关于原生和hybid之争,这里不做探讨.主要讲讲JS和OC交互 开讲前附上一个牛逼的第三方 JavascriptBridge OC执行JS代码 1.stringByEvaluatingJavaScriptFromString 这个方法是UIWebView里面的方法,也是最为简单的和JS交互的方式 - (nullable NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script; 用法比较简单,一般在代理方法- (vo

js 判断android、IOS

var ua = navigator.userAgent.toLowerCase(); if (/iphone|ipad|ipod/.test(ua)) { //alert("iphone"); } else if (/android/.test(ua)) { alert("android"); } <script type="text/javascript"> var u = navigator.userAgent; var isA

JS判断Android、iOS或浏览器的多种方法(四种方法)

第一种:通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端. 代码如下: <script type="text/javascript"> var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 var isiOS = !!u.match(/\(i[^;]+;( U;)?

webapp js与安卓,ios怎么交互

/*这段代码是固定的,必须要放到js中*/function setupWebViewJavascriptBridge(callback) { var u = navigator.userAgent; var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); if (!isiOS) { if (window.WebViewJavascriptBridge) { callback(WebViewJavascriptBridge) } else {

WebViewJavascriptBridge 使用 js调iOS原生代码

js代码和原生ios代码进行交互使用WebViewJavascriptBridge非常简化了我们的操作特别是在ios这边 js 掉用ios原生代码时要注意的几个事项: 1.js和ios定义好相互调用的各自要掉用对方的函数名 2.ios中的操作: a.创建一个bridge对象self.bridge = [WebViewJavascriptBridge bridgeForWebView:webView]; b.注册ios中给js回调的代码[self.bridge registerHandler:@"