android把js的注入和方法统一管理,android WebView 注入js 几种方式
有时我们开发中需要将js 注入到我们本地,有可能你会说,放在Web不就可以了吗,的确,但是需求就是这样的
通过流的形式注入
@SuppressLint("ObsoleteSdkInt")
public void onJsLocal() {
StringBuilder builder = new StringBuilder(getJS(this, "qqq.js"));
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
agentWeb.getWebCreator().getWebView() .loadUrl("javascript:" + builder.toString());
} else {
agentWeb.getWebCreator().getWebView().evaluateJavascript(builder.toString(), new ValueCallback() {
@Override
public void onReceiveValue(String value) {
Log.i("onReceiveValue", value);
}
});
}
}
第二种 通过文件加载
view.loadUrl("javascript:(function() { "
+ " " //turns to red the background color
+ " var script=document.createElement('script'); "
+ " script.setAttribute('type','text/javascript'); "
+ " script.setAttribute('src', 'http://192.168.12.2/assets/mathjax/jsBridge.js'); "
+ " script.onload = function(){ "
+ " console.log('aaaaaaaa' ) ; "
+ " }; "
+ " document.getElementsByTagName('head')[0].appendChild(script); "
+ "})()");
第三种,第二种有可能存在加载不成功的情况,我们可以拦截
Map map = new HashMap<>();
map.put("Access-Control-Allow-Origin", "*");
map.put("Access-Control-Allow-Headers", "Content-Type");
WebResourceResponse resourceResponse = new WebResourceResponse("application/javascript",
"UTF-8", 200, "OK", map,
getApplication().getAssets().open(JS_FILENAME));
注意由于注入是一个异步的操作,所以和js交互的过程有可能存在不顺畅的问题
可以采用
view.postDelay ...
android把js的注入和方法统一管理,android WebView 注入js 几种方式相关推荐
- ASP.NET中对Exception的统一集中处理常见的有两种方式的一些问题总结
ASP.NET中对Exception的统一集中处理常见的有两种方式: 1.通过配置Web.config的customErrors节点,配置defaultRedirect属性来实现所有"未处理 ...
- 合并多个js,css文件的方法:在服务端合并js和css文件
合并所有的js和css文件可以减少HTTP请求,这样能提升访问速度. 通常为了开发的方便,我们会把js按用途分类,这样就会有很多js文件,比如sablog的jscript文件夹里就有10几个文件,这样 ...
- android如何绑定事件,Android_安卓为按钮控件绑定事件的五种方式
一.写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick ...
- JS一起学02:函数传参、操作属性第二种方式、提取行间事件、循环、this、焦点问题、联动选择、选项卡焦点图
一.函数传参 1.函数传参:参数就是占位符----函数里定不下来的东西 var a1=function(){ alert(123); }; function a(f){ // 相当于 f=a1 ...
- Unity Android 之 获取系统语言(手机设备设置的系统语言)的二种方式(中文区分简体、繁体、日文)
Unity Android 之 获取系统语言的二种方式(中文区分简体.繁体.日文) 目录 Unity Android 之 获取系统语言的二种方式(中文区分简体.繁体.日文) 一.简单介绍 二.实现原理 ...
- Android textview设置ttf字体库本地库和网络库使用的两种方式
一:从assets中加载 将相关ttf字体库放入assets/fonts文件夹下,注意ttf文件名称不能是中文 // 加载assets中的字体 TextView textView1 = (TextVi ...
- java产生随机数的方法_JAVA: java产生随机数的几种方式
java产生随机数的几种方式 一.在j2se里我们可以使用Math.random()方法来产生一个随机数,这个产生的随机数是0-1之间的一个double,我们可以把他乘以一定的数,比如说乘以100,他 ...
- 微信 android 闪退问题怎么解决方法,如何解决微信闪退问题 四种解决微信闪退无法登录的原因及方法分享...
微信闪退无法登录怎么办?现在使用微信的用户越来越多,即方便又快捷,有的朋友在使用时候可能会遇到微信闪退无法登陆的情况,今天小编为大家带来了四种解决微信闪退无法登录的原因及方法分享,感兴趣的朋友快来了解 ...
- JS方法参数设置为默认值的几种方式
绪论 写JS方法会碰到参数不固定的时候,把每个参数都赋值又感觉麻烦,就想有没有办法设置个默认值呢?果然有解决方法.在此记录一下. 正文 <!DOCTYPE html> <div la ...
最新文章
- 阿铭每日一题 day 6 20180116
- 页面加载速度优化的12个建议
- 利用ajax.dll进行Ajax的开发2007-07-15 15:38
- 计算机网络是如何通信的【一】
- bzoj5090[lydsy11月赛]组题
- Java与Http协议
- Eclipse安装Hibernate插件快速生成配置文件
- 修改centos默认启动级别为字符模式
- python canny函数_python库skimage 应用canny边缘探测算法
- 手把手教你从0-1做一张酷炫驾驶舱,让老板对你赞不绝口
- 下一时代的HTML5和JavaScript
- Windows Server 2008 R2+SQL Server 2014 R2升级到Windows Server 2016+SQL Server 2016
- JAVA数组的遍历 获取最大值最小值 数组的反转 数组的查找 练习 定义方法创建指定大小的数组,并添加指定元素 拼接两个数组
- 数据挖掘之数据处理——SVM神经网络的数据分类预测-意大利葡萄酒种类识别
- 苹果支付Java服务器实现
- C++-OpenCV(1)-连通区域
- iOS TouchID和FaceID登录验证 简单使用
- CSS 条纹背景秘探
- 目标检测:PASCAL VOC 数据集简介
- 力扣(LeetCode)904. 水果成篮(C语言)
热门文章
- UIKit框架之NSObject
- Visual Studio Developer Assistant 3月新功能展示
- C++ :stringstream介绍,使用方法与例子(转)
- thinkphp 二级域名绑定模块,导致设置的路由被多域名共用的问题解决方案
- 知识图谱在美团推荐场景中的应用实践
- 【报告分享】2021年中国五大主流电商平台关于用户数据的最新规则汇总.pdf(附下载链接)...
- 【方案分享】2020娜扎X薇娅SKG娜小古直播方案.pdf(附下载链接)
- 【报告分享】2020年小红书内容生态报告.pdf(附下载链接)
- 【报告分享】线上汉服消费洞察报告.pdf(附下载链接)
- 【报告分享】疫情期间抖音、快手带货趋势分析报告.pdf(附下载链接)