浅谈webview与js交互
浅谈下webview与js的交互,项目中因为需要获取页面中的许多属性,所以用到了这些,让后端在方法中传了过来.
下面的demo是本地的html代码,具体可以仿写,都差不多,注重思想.
1:项目目录

2:jump的代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<script type="text/javascript"> //Java调用JS代码无参数
function javacalljs(){
document.getElementById("content").innerHTML +=
"<br\>java调用了js函数";
} //Java调用JS代码有参数
function javacalljsparam(param){
document.getElementById("content").innerHTML +=
"<br\>java调用了js函数含参数param"+param;
} function testFunc(){ window.WebViewFunc.jsCallWebView();
} </script>
<title>测试页面</title>
</head>
<body>
<a onClick="testFunc()">无参数JS调用java代码</a><br/> <br/> <br/>
<a onClick="window.WebViewFunc.jsCallWebView('含有参数')">含参数调用java代码</a><br/>
<br />
<div id="content">内容显示</div>
</body>
</html>
3:web的代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK"/>
<script type="text/javascript"> //Java调用JS代码无参数
function javacalljs(){
document.getElementById("content").innerHTML +=
"<br\>java调用了js函数";
} //Java调用JS代码有参数
function javacalljsparam(param){
document.getElementById("content").innerHTML +=
"<br\>java调用了js函数含参数param"+param;
} function testFunc(){
window.WebViewFunc.jsCallWebView();
} </script> <title>测试页面</title>
</head>
<body>
<a onClick="testFunc()">无参数JS调用java代码____________</a><br/> <br/><br/>
<script>
function doIt() {
var param = '{\"action\":\"webview\",\"infotype\":\"G1\",\"fromurl\":\"http://m.nearbar.com/m/nad/adclick.jsp?sid=3&adid=43&a=11010805&xid=0&ruid=87120\",\"title\":\"光明纯牛奶\",\"digest\":\"新鲜我的生活\",\"headimgs\":\" http://upload.nearbar.com/photos/1101/G1/0/43_1469154394009.jpeg\"}';
window.WebViewFunc.jsCallWebView(param);
}
</script>
<a onClick="doIt()">含参数调用java代码--------</a><br/>
<br />
<div id="content">内容显示 <a href="jump.html" target="_self">跳转新页面jump.html</a></div>
</body>
</html>
4:这里需要注意一点,当参数是一个json串时,格式需要格外注意,尤其是,需要在调用是参数需要加上单引号,如果是后端的html或者jsp代码时,需要注意编码.
5:MJavascriptInterface的代码
public class MJavascriptInterface {
private Context context;
public MJavascriptInterface(Context context) {
super();
this.context = context;
}
/**
* JS调用Android(Java)无参数的方法
*/
@JavascriptInterface
public void jsCallWebView() {
Toast.makeText(context, "JS Call Java!",
Toast.LENGTH_SHORT).show();
}
/**
* JS调用Android(Java)含参数的方法
* @param param
*/
@JavascriptInterface
public void jsCallWebView(String param) {
Toast.makeText(context, "JS Call Java!" + param,
Toast.LENGTH_SHORT).show();
}
}
6:主界面webview加载jump的代码.
//添加JS调用Android(Java)的方法接口
MJavascriptInterface mJavascriptInterface = new MJavascriptInterface(getApplicationContext());
webView.addJavascriptInterface(mJavascriptInterface,"WebViewFunc");
这里需要注意,android2.3之后, JavascriptInterface需要加上注解.
另外别忘了添加setJavaScriptEnabled(true);
浅谈webview与js交互的更多相关文章
- webview与js交互(转)
原文:http://www.cnblogs.com/vanezkw/archive/2012/07/02/2572799.html 对于android初学者应该都了解webView这个组件.之前我也是 ...
- 浅谈WebView的使用 js alert
http://blog.csdn.net/liuhe688/article/details/6549263 WebView是Android中一个非常实用的组件,它和Safai.Chrome一样都是基于 ...
- webView和js交互
与 js 交互 OC 调用 JS // 执行 js - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *title = [web ...
- iOS webView与js交互在文本空格上输入文字
项目要求:webview加载html网址,内容为填空题型文本,需要在横线上添加答案,并点击提交按钮后再将答案进行回显 正常加载的效果图片: 这个是用js交互后的效果图: 点击空格,输入想输入的答案,如 ...
- webview与js交互
对于android初学者应该都了解webView这个组件.之前我也是对其进行了一些简单的了解,但是在一个项目中不得不用webview的时候,发现了webview的强大之处,今天就分享一下使用we ...
- [android] WebView与Js交互
获取WebView对象 调用WebView对象的getSettings()方法,获取WebSettings对象 调用WebSettings对象的setJavaScriptEnabled()方法,设置j ...
- Android Webview 与JS交互
Android中 WebView控件支持JS与本地代码的交互. // 是否允许在webview中执行javascript webSettings.setJavaScriptEnabled(true); ...
- Android中使用WebView与JS交互全解析
1.概述首先,需要提出一个概念,那就是hybrid,主要意思就是native原生Android和h5混合开发.为什么要这样做呢?大家可以想象一下针对于同一个活动,如果使用纯native的开发方式,An ...
- Android原生webview中js交互
http://www.cnblogs.com/android-blogs/p/4891264.html Html页面和Java代码结合的方式一般用在界面经常被更改 的情况下,可以讲html放在网络中, ...
- swift-初探webView与JS交互
公司接下来的项目需要用swift内嵌h5来实现, 以前没有做过swift项目, 现在慢慢将所学的一点一滴记录一下 一个是怕自己忘了- =, 再就是希望大家看到能帮助我哈哈哈 前几天想要直接用swift ...
随机推荐
- 提取protobuf定义文件结构
先安装protobuf的js支持包 npm install protobufjs test.proto文件如下所示 syntax = "proto3"; package Test; ...
- 【krpano】密码插件
密码插件可以在浏览场景或者执行action之前弹出密码输入框,要求用户输入密码.当密码输入成功了才可以进行下一步操作. 下载地址:http://pan.baidu.com/s/1gfOKKKF 给场景 ...
- WASI support in Go
原文在这里. 由 Johan Brandhorst-Satzkorn, Julien Fabre, Damian Gryski, Evan Phoenix, and Achille Roussel 发 ...
- Scrapy官方文档爬取
最近想爬点啥东西看看, 所以接着学习了一点Scrapy, 学习过程中就试着去爬取Scrapy的官方文档作为练习之用, 现在已经基本完成了. 实现原理: 以 overview.html 为起点,通过 r ...
- 【爬虫笔记】Python爬虫简单运用爬取代理IP
一.前言 近些年来,网络上的爬虫越来越多,很多网站都针对爬虫进行了限制,封禁了一些不规则的请求.为了实现正常的网络爬虫任务,爬虫常用代理IP来隐藏自己的真实IP,避免被服务器封禁.本文将介绍如何使用P ...
- 【RocketMQ】Rebalance负载均衡总结
消费者负载均衡,是指为消费组下的每个消费者分配订阅主题下的消费队列,分配了消费队列消费者就可以知道去消费哪个消费队列上面的消息,这里针对集群模式,因为广播模式,所有的消息队列可以被消费组下的每个消费者 ...
- redis 源码分析:Jedis 哨兵模式连接原理
1. 可以从单元测试开始入手 查看类JedisSentinelPool private static final String MASTER_NAME = "mymaster"; ...
- Go 项目代码布局
Go 项目代码布局 目录 Go 项目代码布局 一.Go 语言"创世项目"结构 1.1 src 目录结构三个特点 二.Go 项目布局演进 2.1 演进一:Go 1.4 版本删除 pk ...
- 爽。。。一键导出 MySQL 表结构,告别手动梳理表结构文档了。。。
背景 系统需要交付,客户要求提供交维材料,包括系统的表结构,安排开发人员进行梳理,效率比较慢,遂自己花点时间捣鼓一下,发现有此插件,记录一下方便与同事分享 前提条件 必须有 go语言环境,有的话直接看 ...
- Java多线程笔记全过程(一)
一.多线程最基础的基本概念 一个程序最少需要一个进程,而一个进程最少需要一个线程. 我们常说的高并发,也并不全是线程级别的并发,在很多开发语言中,比如PHP,很常见的都是进程级别的并发.但是在Java ...