android js交互

Vue框架下 JS与native的交互(iOS&Android)

匿名 (未验证) 提交于 2019-12-03 00:41:02
需求: 在原生App里打开webview, 嵌入H5. 在H5中点击某个元素, 触发与native app交互, 又跳回到app中. 同理, 在app中完成某项操作后, 获得某个参数, 根据这个状态刷新页面. 框架: Vue. JavaScript原生的写法已经调通了, 并且与native端的已经联调通过. 所以这里是把它们迁移到Vue框架的写法. 这里要区分iOS系统和Android系统. iOSϵͳ 在这里与iOS开发的同事协商后, 决定使用 WebViewJavascriptBridge 来开发. 前端不需要放入任何js插件. 只需要准备一下这段内容. bridge.js function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { return callback(window.WebViewJavascriptBridge) } if (window.WVJBCallbacks) { returnwindow.WVJBCallbacks.push(callback) } window.WVJBCallbacks = [callback] let WVJBIframe = document.createElement(‘iframe‘) WVJBIframe

H5与Native交互之JSBridge技术

匿名 (未验证) 提交于 2019-12-03 00:40:02
一、原理篇 下面分别介绍IOS和Android与Javascript的底层交互原理 IOS 在讲解原理之前,首先来了解下iOS的UIWebView组件,先来看一下苹果官方的介绍: You can use the UIWebView class to embed web content in your application. To do so, you simply create a UIWebView object, attach it to a window, and send it a request to load web content. You can also use this class to move back and forward in the history of webpages, and you can even set some web content properties programmatically. 上面的意思是说UIWebView是一个可加载网页的对象,它有浏览记录功能,且对加载的网页内容是可编程的。说白了UIWebView有类似浏览器的功能,我们使用可以它来打开页面,并做一些定制化的功能,如可以让js调某个方法可以取到手机的GPS信息。 但需要注意的是,Safari浏览器使用的浏览器控件和UIwebView组件并不是同一个

js调用安卓方法

匿名 (未验证) 提交于 2019-12-02 23:42:01
index.html 以.html格式放到src/main/assets文件夹里 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Carson_Ho</title> </head> <!-- 点击按钮则调用clickprompt() --> <body> <button type="button" id="button1" onclick="clickprompt()">点击调用Android代码</button> </body> <script> function clickprompt(){ // 调用prompt() var result=prompt("js://demo?arg1=111&arg2=222"); alert("demo " + result); } </script> </html> 当使用mWebView.loadUrl(“file:///android_asset/apps/H55DE56D8/www/index.html”)加载了上述JS代码后,就会触发回调onJsPrompt(),具体如下: 步骤2:在Android通过WebChromeClient复写onJsPrompt() package com.example.myapplication; import android

第一章 javaScript简介

≡放荡痞女 提交于 2019-11-29 05:01:32
1.javaScript概念 javaScript是基于对象的,事件驱动的,跨平台的,解释型客户端脚本语言 1.1,基于对象的: 我们先来理解对象的概念,什么是对象昵?现实生活中,我们把每一种事物都可以叫对象。每一个对象都有自己的外在特征和功能,例如一部手机是一种对象,它的外在特征有颜色,重量,大小等,手机的功能可以打电话,发信息,视频等。于是我们把一个对象的外在特征称为“属性”,功能称为“行为方式”,也可以叫方法。因此,所有的对象都包含了属性和方法这两种东西。 于是我们知道了,对象有属性和方法。使用对象,利用对象的功能(方法),我们可以做很多事,比如用手机打电话,用笔可以写字,用电饭锅可以做饭,用刀切菜...... js中,也有很多现成的对象供我们使用,使用这些对象,就可以实现很多功能。因此,我们说,js是基于对象来实现许多功能的一门语言 1.2,事件驱动的: 我们在浏览很多网站的时候,通常要对很多HTML元素进行操作,例如点击一个注册按钮注册会员,点击登录按钮登录网站,在文本框中输入用户名时自动检测用户名是否已存在等,很多功能的实现,需要建立在某些鼠标或键盘或文本框的操作上,才能得以实现。而js为我们提供了一些事件机制,利用这些事件机制,我们可以让HTML的元素通过不同的事件操作,实现需要的功能。 1.3,跨平台的: js的代码,可以在不同的系统及平台中运行

Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScrip

吃可爱长大的小学妹 提交于 2019-11-28 22:33:16
Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本。本文将介绍如何实现Java代码和Javascript代码的相互调用。 如何实现 实现Java和js交互十分便捷。通常只需要以下几步。 WebView开启JavaScript脚本执行 WebView设置供JavaScript调用的交互接口。 客户端和网页端编写调用对方的代码。 本例代码 为了便于讲解,先贴出全部代码 Java代码 lineos:false 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 package com.example.javajsinteractiondemo; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.util.Log; import

JS实现多语言方式

痴心易碎 提交于 2019-11-28 11:50:23
应用场景: 在不同移动平台(IOS,Android)上,建立一套与HTML页面通讯框架;主要业务逻辑使用HTML开发;想支持多语言开发。 动机: 通过主动发消息的方式,在页面完成初始化前,获取当前语言选项,并且根据该语言选项,调用对应的JS文件(每种语言对应一个JS文件)解析页面。 实现细节: 向本地语言框架发请求获取语言种类; $(document).on("pageinit",function(){ /*Kaiwii 向本地代码发请求获取当前语言种类*/ }); 本地语言框架触发回调函数(JS方法):根据语言选项,动态将对应语言的JS文件嵌入HTML并且触发其执行; /*Kaiwii 本地语言框架回调本方法*/ function GetLanguageCodeCallBack(Jstring,ERROR){ var i18File = $("script[name='i18']"); if(i18File.length==0){//没有成功加载js文件 var i18FileLink = "<script name='i18' src='../../js/i18.js'></script>"; switch (Jstring){ case "EN": i18FileLink = "<script name='i18' src='../../js/i18.js'></script

WebView开源库终极方案

人走茶凉 提交于 2019-11-26 19:25:24
目录介绍 01.前沿说明 1.1 案例展示效果 1.2 该库功能和优势 1.3 相关类介绍说明 1.4 WebView知识点 02.如何使用 2.1 如何引入 2.2 最简单使用 2.3 常用api 2.4 使用建议 2.5 异常状态类型区分 2.6 该库流程图 03.js调用 3.1 Java调用js方法 3.2 js调用java方法 3.3 js的调用时机分析 3.4 js交互原理分析 04.问题反馈 05.webView优化 06.关于参考 07.其他说明介绍 01.前沿说明 基于腾讯x5开源库,提高webView开发效率,大概要节约你百分之六十的时间成本。该案例支持处理js的交互逻辑且无耦合、同时暴露进度条加载进度、可以监听异常error状态、支持视频播放并且可以全频、支持加载word,xls,ppt,pdf,txt等文件文档、发短信、打电话、发邮件、打开文件操作上传图片、唤起原生App、x5库为最新版本,功能强大。项目地址: webView开源库 同时,该案例中,04问题反馈也记录了绝大多数实际开发中遇到的问题,如果还有其他的问题,也可以发送给我,我收集起来放到一起,方便后期查阅。 可以说,该开源库,以及附带的webView基础知识点,问题汇总,以及优化方案等笔记,相对来说比较系统而又全面的梳理webView的知识体系,相对而言也是比较实用的

WebView开源库终极方案

做~自己de王妃 提交于 2019-11-26 11:23:20
目录介绍 01.前沿说明 1.1 案例展示效果 1.2 该库功能和优势 1.3 相关类介绍说明 1.4 WebView知识点 02.如何使用 2.1 如何引入 2.2 最简单使用 2.3 常用api 2.4 使用建议 2.5 异常状态类型区分 2.6 该库流程图 03.js调用 3.1 Java调用js方法 3.2 js调用java方法 3.3 js的调用时机分析 3.4 js交互原理分析 04.问题反馈 05.webView优化 06.关于参考 07.其他说明介绍 01.前沿说明 基于腾讯x5开源库,提高webView开发效率,大概要节约你百分之六十的时间成本。该案例支持处理js的交互逻辑且无耦合、同时暴露进度条加载进度、可以监听异常error状态、支持视频播放并且可以全频、支持加载word,xls,ppt,pdf,txt等文件文档、发短信、打电话、发邮件、打开文件操作上传图片、唤起原生App、x5库为最新版本,功能强大。项目地址: webView开源库 同时,该案例中,04问题反馈也记录了绝大多数实际开发中遇到的问题,如果还有其他的问题,也可以发送给我,我收集起来放到一起,方便后期查阅。 可以说,该开源库,以及附带的webView基础知识点,问题汇总,以及优化方案等笔记,相对来说比较系统而又全面的梳理webView的知识体系,相对而言也是比较实用的

程序员笔记|JSBridge框架解决通信问题实现移动端跨平台开发

时光总嘲笑我的痴心妄想 提交于 2019-11-26 00:09:57
一、跨平台开发是趋势 目前主流的移动端平台主要是Android和iOS,为了尽可能复用代码和节省开发成本,各大巨头都开发了自己的跨平台框架,比如Facebook的React-Native、阿里的Weex、Cordova,以及今年Google开发者大会上介绍的Flutter框架。这些框架各有优缺点,但是到目前为止都没有大规模地推广开来,在我看来主要有以下几个原因: 1、开发者生态圈还不够成熟 RN是三大跨平台框架中关注人最多、生态最活跃的框架,但是到目前为止也没有到1.0版本(最新的release是0.57.8),更别说作为后来者的Weex和Flutter了。生态不成熟,意味着开发文档少,可以使用的开源控件少,比如在RN上想做一个最基本的下拉刷新和上拉加载更多的listview都比较费劲。Weex已经贡献给Apache,很久没有更新release了。Flutter现在还在beta版本,其发展还有待观察。 2、性能问题 虽然这几大框架都对渲染性能做了优化,但是相比原生还是差一些,RN和weex都自己实现了一个浏览器内核(JSCore),因此多了一层js解析,渲染较慢。比如RN的listview,如果数据量太大就会出现卡顿。Flutter虽然自带绘制引擎,但是跟原生比起来还是有一些距离。 3、兼容问题 虽然这三大平台的初衷都是为了跨平台(Write/Learn once, run