Android

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>方法实现</title>
<meta name="author" content="m.gome.com.cn">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<script type="text/javascript" src="js/zepto.js"></script>
</head>
<body>
<h1>JS_Android交互测试</h1>
<script type="text/javascript"> function test(){
var _log = document.createElement('p');
document.body.appendChild(_log);
_log.innerHTML = 'JS handler [test] was called';
} //打印错误日志
window.onerror = function(err) {
var errlog = document.createElement('p');
document.body.appendChild(errlog);
errlog.innerHTML = err;
}
Zepto(function(){
bridge.send('Enemy spotted');
}) window.onload = function(){
var uniqueId = 1; //日志记录
function log(message, data) {
var log = document.getElementById('log'),
el = document.createElement('div');
el.className = 'logLine';
el.innerHTML = uniqueId++ + '. ' + message + (data ? ': ' + JSON.stringify(data) : '');
if (log.children.length) {
log.insertBefore(el, log.children[0]);
}
else {
log.appendChild(el);
}
} log('window onload Ready'); /* 功能1
* 页面加载完成后给Native传值
* Native随时给js传值
* 应用场景: H5页面传值给Native,动态生成顶栏标题。
* 测试用例: 页面加载完成后,js给Native传值,Native拿到后传值给js,页面打印日志
*/ /* 功能2
* Native调用js方法,执行完后回调
* 应用场景: Native返回按钮调用H5返回功能
* 测试用例: 项目js和wap公用js(不影响现有wap站js库,且调用灵活)
*/
// bridge.delayJsCallBack(0, 'call back haha', function (msg) {
// bridge.alert(msg);
// });
//bridge.registerHandler('test', wapJs());
//test(); /* 功能3
* js调用Native方法,执行完后回调
* 应用场景: H5分享按钮调用Native分享功能
* 测试用例: alert
*/
var Btn = document.getElementById('btn');
Btn.ontouchstart = function(e){
e.preventDefault();
log("Calling Native handler testOC");
bridge.callHandler('testOC',{'id': '123'}, function(response) {
log('Got response from testOC callBack', response)
})
}
}
</script>
<button id='btn'>js call Native</button>
<div id='log'></div>
</body>
</html>

IOS:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>方法实现</title>
<meta name="author" content="m.gome.com.cn">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.effect.js"></script>
</head>
<body>
<h1>JS_OC交互测试</h1>
<script type="text/javascript"> window.onerror = function(err) {
log(err);
} //给WebViewJavascriptBridgeReady事件注册一个Listener
document.addEventListener('WebViewJavascriptBridgeReady', onBridgeReady, false)
//事件的响应处理
function onBridgeReady(event) {
var bridge = event.bridge,
uniqueId = 1; //日志记录
function log(message, data) {
var log = document.getElementById('log'),
el = document.createElement('div');
el.className = 'logLine';
el.innerHTML = uniqueId++ + '. ' + message + (data ? ': ' + JSON.stringify(data) : '');
if (log.children.length) {
log.insertBefore(el, log.children[0]);
}
else {
log.appendChild(el);
}
} log('WebView2Javascript Bridge Ready'); /* 功能1
* 页面加载完成后给Native传值
* Native随时给js传值
* 应用场景: H5页面传值给Native,动态生成顶栏标题。
* 测试用例: 页面加载完成后,js给Native传值,Native拿到后传值给js,页面打印日志
*/
bridge.send('Enemy spotted');
//初始化操作,并定义默认的消息处理逻辑
bridge.init(function(message) {
log('Roger that, 3Q js!', message);
}) /* 功能2
* Native调用js方法,执行完后回调
* 应用场景: Native返回按钮调用H5返回功能
* 测试用例: 项目js和wap公用js(不影响现有wap站js库,且调用灵活)
*/
bridge.registerHandler('test', function(data, response) {
log('JS handler [test] was called', data);
response.respondWith({ 'Javascript':'Roger!' });
})
//bridge.registerHandler('test', wapJs()); /* 功能3
* js调用Native方法,执行完后回调
* 应用场景: H5分享按钮调用Native分享功能
* 测试用例: alert
*/
var Btn = document.getElementById('btn');
Btn.ontouchstart = function(e){
e.preventDefault();
log("Calling Native handler testOC");
bridge.callHandler('testOC',{'id': '123'}, function(response) {
log('Got response from testOC callBack', response)
})
}
}
</script>
<button id='btn'>js call Native</button>
<div id='log'></div>
</body>
</html>

App交互demo的更多相关文章

  1. --@angularJS--指令与指令之间的交互demo

    1.index.html: <!DOCTYPE HTML><html ng-app="app"><head>    <title>c ...

  2. APP交互

    交互设计基本功!5个值得学习的APP交互方式http://www.uisdc.com/5-interactive-design-worth-learning 移动App交互设计10大趋势–你用到了吗? ...

  3. Android - 和其他APP交互 - 获得activity的返回值

    启用另一个activity不一定是单向的.也可以启用另一个activity并且获得返回值.要获得返回值的话,调用startActivityForResult()(而不是startActivity()) ...

  4. Android - 和其他APP交互 - 把用户带到其他app

    Android的重要功能之一就是app可以根据要执行的操作让用户启动另外一个app.例如,app有一个商业地址然后想要在地图上显示,并不需要在app中加一个显示地图的activity,可以直接用Int ...

  5. 如何用Axure快速制作APP交互原型

    对于产品经理来说,熟练使用一些常用软件是一项十分必要的技能.其中,作为一个专业的快速原型设计工具,Axure RP无疑在产品人心中拥有一个难以撼动的地位.但就要PS一样,虽然足够专业,但同样也会存在使 ...

  6. h5 与原生 app 交互的原理

    现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次就来捋 ...

  7. 客户端相关知识学习(二)之h5与原生app交互的原理

    前言 现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次 ...

  8. h5与app交互

    现在移动端 web 应用,很多时候都需要与原生 app 进行交互.沟通(运行在 webview中),比如微信的 jssdk,通过 window.wx 对象调用一些原生 app 的功能.所以,这次就来捋 ...

  9. --@angularJS--指令与控制器之间的交互demo

    1.index.html: <!DOCTYPE HTML><html ng-app="app"><head>    <title>c ...

随机推荐

  1. 解决 SQLite数据库 no current row

    场景: SQLite数据库,在查询数据时,提示 标题错误异常.查看堆栈,是在SQLiteDataReader.CheckValidRow 时报错. 数据查询是通过 adapter.Fill(dt) 进 ...

  2. 正则表达式(BREs,EREs,PREs)差异比较

    我想各位也和我一样,再linux下使用grep,egrep, awk , sed, vi的搜索时,会经常搞不太清楚,哪此特殊字符得使用转义字符'\' ..   哪些不需要, grep与egrep的差异 ...

  3. sealed修饰符

    sealed(C# 参考) 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承. 在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承. class A {} s ...

  4. HTTP协议下保证登录密码不被获取更健壮方式

    说到在http协议下用户登录如何保证密码安全这个问题:    小白可能第一想法就是,用户在登录页面输入密码进行登录时,前台页面对用户输入的密码进行加密,然后把加密后的密码作为http请求参数通过网络发 ...

  5. [转][色彩 A] – 永远不要使用纯黑

    原文地址:http://www.cgjoy.com/forum.php?mod=viewthread&tid=110762&extra=page%3D1%26filter%3Dtype ...

  6. [Android实例] Scroll原理-附ScrollView源码分析

    想象一下你拿着放大镜贴很近的看一副巨大的清明上河图, 那放大镜里可以看到的内容是很有限的, 而随着放大镜的上下左右移动,就可以看到不同的内容了 android中手机屏幕就相当于这个放大镜, 而看到的内 ...

  7. UML系列图--用例图

    UML-Unified Model Language 统一建模语言,又称标准建模语言.是用来对软件密集系统进行可视化建模的一种语言. 在UML系统开发中有三个主要的模型: 功能模型: 从用户的角度展示 ...

  8. 通过位运算生成ID

    public static void main(String[] args) { long serverId = 65535; System.out.println("ServerId:&q ...

  9. android之datepicker控件用法

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  10. 使用系统UITabbarItem自定义图片显示原本颜色和自定义文字颜色

    ...... ThirdViewController *thirdVC = [[ThirdViewControlleralloc]initWithTitle:@"搜索信息"]; / ...