一、对于Android和ios我们要执行不同的操作,下面是判断系统的js代码
// alert(ismobile(1)); 1表示Android,0表示ios
function ismobile(test){
var u = navigator.userAgent, app = navigator.appVersion;
if(/AppleWebKit.*Mobile/i.test(navigator.userAgent) || (/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))){
if(window.location.href.indexOf("?mobile")<0){
try{
if(/iPhone|mac|iPod|iPad/i.test(navigator.userAgent)){
return '0';
}else{
return '1';
}
}catch(e){}
}
}else if( u.indexOf('iPad') > -1){
return '0';
}else{
return '1';
}
}
二、js调用app端函数,下面是js代码
if(ismobile(1)==1){
Android.setTypeActivity(id,type,href);
}else{
jsToios(id,type,href);
}
setTypeActivity是Android端定义的函数,jsToios是ios端定义的函数,括号里是js端传递的参数。
三、至于js端怎样获取app端的数据,只需在js端提供给app端函数名字,在通知app端调用即可
四、还有一种方法可以不通过app的方法将数据传递给另一个页面,那就是通过URL的方式
在本页面将数据拼接在ip后面
在另外一个页面通过下面方法获取URL后的参数
function GetRequest() {
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=decodeURIComponent(strs[i].split("=")[1]);
}
}
return theRequest;
}
// 获取URL参数
var Request = new Object();
Request = GetRequest();
var name;
name = Request['name'];
刚开始做与app交互的HTML5时,有点不知所措,其实这种说明网上有很多资料,我现在专门站在前端的角度总结一下。
现在很多原生的app都会嵌入或多或少的HTML5页面,所以了解js怎样与原生app交互是必须的,至于怎样进行交互更能优化app的交互,那还需要不断的实践。