JsBrage -- App中WebView与JS的交互桥梁

在Hybrid App中网页都是显示在原生的WebView中,js与原生通信都是靠WebView提供的支持方式来实现的,而将这个实现方式抽象封装出来的模块,就是JsBrage。

Android:

对于Android调用JS代码的方法有2种: 
1. 通过WebViewloadUrl(),目前项目中用的这种方式

mWebView.loadUrl("file:///android_asset/javascript.html");
mWebView.loadUrl("javascript:callJS()");

2. 通过WebViewevaluateJavascript(),Android 4.4 后才可使用

mWebView.evaluateJavascript("javascript:callJS()", new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String value) {
            //此处为 js 返回的结果
        }
});

对于JS调用Android代码的方法有3种: 
1. 通过WebViewaddJavascriptInterface()进行对象映射 , Android 4.2版本之前有安全漏洞问题

2. 通过 WebViewClient 的shouldOverrideUrlLoading ()方法回调拦截 url 
3. 通过 WebChromeClient 的onJsAlert()onJsConfirm()onJsPrompt()方法回调拦截JS对话框alert()confirm()prompt() 消息

各有优缺点,参考 https://blog.csdn.net/carson_ho/article/details/64904691

Ios还没仔细研究:

Ios调用JS代码的方法:

1. loadURL方式可以

2. 在iOS代码处获取webView中javaScriptContext, 得到上下文。直接调用js方法

JS调用Ios代码的方法:

1. 与安卓一样,通过拦截url

2. 在iOS代码处获取webView中javaScriptContext, 得到上下文。注入方法,供js调用

3. 貌似还能直接调用js方法

原文地址:https://www.cnblogs.com/liyongquan/p/9152531.html

时间: 2024-08-01 21:29:10

JsBrage -- App中WebView与JS的交互桥梁的相关文章

windows8.1 App中webView 使用定位

windows8.1的webview的网页中没有办法直接定位  要想定位比较费劲   查了好久才发现一个可行的办法 那就是通过后台代码获取位置信息 然后调用页面中已有的获取位置信息的JS方法 把位置信息的经度纬度传给网页  然后在网页中加载位置信息 代码如下: async void webView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args) { Geolocator geolocato

安卓webview和js+html交互利用的addJavascriptInterface和webview.loadUrl(&quot;javascript:**&quot;);

近期做一个项目需要把一个 服务支持的界面用webview来显示..呀 html白雪了js更是一样啥也不会,相信很多初学屌丝员跟我一样,, html开发工具都不知道怎么写..哈哈哈.....现在把做完的结果分享一下先上图了 ,, 这是从项目中特意分离出来的demo这里之上一些关键代码 源码下载地址  http://download.csdn.net/download/yung7086/7554309 步骤 首先在assets目录下建一个html文件 <!DOCTYPE html PUBLIC &quo

安卓中java和js如何交互

1.安卓中java和js如何交互 在Android上怎样实现JAVA和JS交互呢?Android的webview是基于webkit内核的,webview中集成了js与java互调的接口函数,通过addJavas criptInterface方法,可以将Java的类注册进webkit,给网页上的js进行调用,而且还可以通过loadUrl方法是给webkit传递一个URL,供浏览器来进行解析,实现Java和js交互. 要想运行网页上的js脚本,webview必须设置支持Javas cript. 2.

Android中webview和js之间的交互(转)

http://www.cnblogs.com/leizhenzi/archive/2011/06/29/2093636.html 1.android中利用webview调用网页上的js代码. Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示: mWebView.getSettings().setJavaScriptEnabled(true); mWebV

webview与JS的交互

一:hybird app, web app 和 native app 的区别   Web App Hybird App 混合Native App 开发成本 低 中 高 维护更新 简单 简单 复杂 体验 差 优 优 跨平台 优 优 差 Native App是一种基于智能手机本地操作系统如IOS,Android等并运用原生程序编写运行的第三方运用程序,也叫本地App. Web App 是针对Iphone,Android优化后的web站点,前端使用的技术是:html5,css,javascript等,

通过Appium获取Android app中webview

因为要测试Android app中嵌入的web页面,所以需要从native切换到webview.网上查了好多帖子,都用到类似下面代码: //判断是否有 WEBVIEWSet<String> contextNames = driver.getContextHandles();for (String contextName : contextNames) {System.out.println(contextName);if (contextName.contains("WEBVIEW&

介绍并提高app中WebView的性能

这周五和老大谈了很长时间的话,感觉颇有收获,在两周做完聊天的任务后,有找到了新的目标,还是那句话,现在还是菜鸟的我正在努力变的不菜,这次我想看着ios developer 文档把我学到的记录下来,这周的目标就是把webView深入学习一下,fighting!!!! 现在有很多软件都在逐渐加入很多webview元素,其原因是安卓和iOS可以共用一套,成本低,开发速度快,一开我就觉得我去这下好了,活少了,我们app这边根本就不需要做什么直接调用几个方法就搞定,nice,现在想起来还真是天真,要么说菜

android webview和js的交互

第一步: mainfest.xml中加入网络权限 <use-permission android:name="android.permission.INTERNET"/> 如果是访问本地的那就不需要加这个权限了 第二步: 加载本地写好的html文件(定义好js中提供给android调用的方法funFromjs(),和android提供给js调用的对象接口) fun1FromAndroid(String name)),放在assets目录下. eg. <body>

转载:ios中objective-c与js的交互

原始出处:http://mkhgg.blog.51cto.com/1741572/752962 iOS中js与objective-c的交互 因为在iOS中没有WebKit.Framework这个库的,所以也就没有 windowScriptObject对象方法了.要是有这个的方法的话 就方便多了,(ps:MacOS中有貌似) 现在我们利用其他方法去达到js与objective-c的交互效果. 首先是objective-c调用js中的代码,可以用uiwebview中的一个方法 stringByEva