一、通过用户代理可以判断网页当前所在的环境

var browser={
versions:function(){
var u = navigator.userAgent, app = navigator.appVersion;
return {
trident: u.indexOf('Trident') > -1, //IE
presto: u.indexOf('Presto') > -1, //opera
webKit: u.indexOf('AppleWebKit') > -1, //webkit
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //firefox
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //mobile
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android or uc
iPhone: u.indexOf('iPhone') > -1 , //iPhone QQHD
iPad: u.indexOf('iPad') > -1, //iPad
webApp: u.indexOf('Safari') == -1
};
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
function iOS7() {
if (/iP(hone|od|ad)/.test(navigator.platform)) {
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
var vers = [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
if(vers[0] >=7)
return true;
return false;
}
return false;
}

 H5与IOS的交互(javascriptBrige) 

if(browser.versions.ios){
//js必写
var connectWebViewJavascriptBridge = function(callback){
if (window.WebViewJavascriptBridge) {
callback(WebViewJavascriptBridge)
} else {
document.addEventListener('WebViewJavascriptBridgeReady', function() {
callback(WebViewJavascriptBridge)
}, false)
} if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }
window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe');
WVJBIframe.style.display = 'none';
WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0) };
connectWebViewJavascriptBridge(function(bridge){
bridge.registerHandler("ToAppPayCallback", function(data, responseCallback) {
// alert("原生返回结果"+data.appPayResult);
$(".loading").css("display","none");
if(data.appPayResult){
window.location.href="./V1/pay/index.html?orderID="+orderID;
}else{
makeToast("支付失败");
}
//alert("H5注册的方法,原生执行");
//alert("原生返回的结果为"+data.appPayResult);
//alert(data);
//alert(responseCallback);
});
submitOrder();
})
function submitOrder(){
if(appPay){
var params = {orderID:orderID,payWay:payWay};
// Log.log("try to call ios native to add image");
if (window.WebViewJavascriptBridge) {
WebViewJavascriptBridge.callHandler('ToAppPay', params, function (response) {
// Log.log("call native to upload image");
// alert(response); /* if(response)*/
});
}
}
}
} 

  H5与安卓做交互(通过拦吐司事件完成交互)

if(browser.versions.android ){
//安卓的回调
//var params = {orderID:orderID,payWay:payWay};
var androidPayWay=$(".payWay").find("input:radio:checked").val();
// alert(androidPayWay);
if(androidPayWay==1){
mAndroid.showToastWithParams(1,orderID); //通过定义安卓的吐司传给安卓两个或者多个值
}else if(androidPayWay==2){
mAndroid.showToastWithParams(2,orderID);
}
}

 

//安卓的回调(安卓通过拦截,监听到事件之后,可以执行js在全局下定义的函数)
function getAndroidResult(result,curOrderId){ //传入的两个值,为安卓的返回
if(result==1){
// window.location.href="./V1/pay/index.html?orderID="+curOrderId;
window.location.href="./mySignUp.html";
}else if(result==2){
makeToast("支付失败");
// $(".payWayBtns").css("display","none");
window.location.reload(); }
}

名词解释

Navigator对象主要是包含有关客户端浏览器的一些信息,Navigator对象是由JavaScript runtime engine自动创建的,但是目前没有针对于navigator对象的公开标

准,不过目前所有浏览器都支持该对象。

Navigator目前主要用于区分安卓、ios、微信等

userAgent属性是一个只读的字符串,申明浏览器用于HTPP请求的用户代理头的值,简单点说其实就是通过UserAgent可以取得浏览器类别、版本,客户端操作系统等信息

//判断浏览器的版本 判断是否是微信浏览器
function is_weixin(){
var ua = navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger") {
return true;
} else {
return false;
}
} //判断是否为移动设备
function isMobile(){
if(/android/i.test(navigator.userAgent)){
//document.write("This is Android'browser.");//这是Android平台下浏览器
return true;
}
if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)){
//document.write("This is iOS'browser.");//这是iOS平台下浏览器
return true;
}
if(/Linux/i.test(navigator.userAgent)){
//document.write("This is Linux'browser.");//这是Linux平台下浏览器
return true;
}
if(/Linux/i.test(navigator.platform)){
//document.write("This is Linux operating system.");//这是Linux操作系统平台
return true;
}
if(/MicroMessenger/i.test(navigator.userAgent)){
//document.write("This is MicroMessenger'browser.");//这是微信平台下浏览器
return true;
}
return false;
}

  

H5与安卓、IOS的交互,判断微信、移动设备、安卓、ios的更多相关文章

  1. IOS请求H5页面、要求自定义agent判断是电脑、安卓还是iPhone登录

    //自定制的userAgent- (void)createMyAgent{        NSString *userAgent = [[[UIWebView alloc]init]stringByE ...

  2. js-jssdk微信H5选择多张图片预览并上传(兼容ios,安卓,已测试)

    值得注意的是: 1.在微信H5中选择图片运用:wx.chooseImage,成功后返回:  res.localIds用于上传图片使用    上传图片:wx.uploadImage. 2.上传图片的时候 ...

  3. 小程序内嵌H5页面判断微信及小程序环境

    判断微信及小程序环境 1.H5页面引入jweixin-1.3.2.js 2. var ua = window.navigator.userAgent.toLowerCase(); if(ua.matc ...

  4. 微信5.4安卓版重回ios风格 导航菜单都放底栏位置

    微信5.4安卓版发布更新了,由于本人的手机设置软件自动更新,中午的时候才发现微信换成了5.4版本,启动微信后是一个大大的“转账,就是发消息”,进入微信界面有点小惊喜,导航菜单都改为底部tab方式,顶部 ...

  5. 微信下输入法在IOS和安卓下的诡异

    1.验证window.innerHeight 系统版本 iOS9.1.1 安卓4.4.4 没有输入法的情况下 504 567 有输入法的情况下 208 273 看来两者的window.innerHei ...

  6. 通过浏览器navigator判断浏览器版本或者手机类型&&判断微信访问

    javascript 的navigator属性,不常用,但是用处也不少,主要用处是在做浏览器兼容的问题的时候,现在有的网站已经不兼容IE6,用户假如用IE6浏览网页的话,会提示浏览器升级等信息.或者判 ...

  7. 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的?

    本文来自微信开发团队yanyang的技术分享. 1.引言 相信大家都遇到过一段特殊文本可以让iOS设备所有app闪退的经历.前段时间大年初一,又出现某个印度语字符引起iOS11系统奔溃,所幸iOS版微 ...

  8. js判断手机端操作系统(Andorid/IOS)

    非常实用的js判断手机端操作系统(Andorid/IOS),并自动跳转相应下载界面 androidURL = "http://xxx/xxx.apk"; var browser = ...

  9. 微信团队分享:iOS版微信的高性能通用key-value组件技术实践

    本文来自微信开发团队guoling的技术分享. 1.前言 本文要分享的是iOS版微信内部正在推广和使用的一个高性能通用key-value 组件的技术实践过程,该组件在微信内部被命名为MMKV(以下简称 ...

随机推荐

  1. 【c#文档】在 C# 中,(int) ,Int32.Parse() 和 Convert.toInt32() 三种方法的区别

    [c#文档]https://msdn.microsoft.com/zh-cn/library/system.convert.toint32.aspx 转载自:http://www.cnblogs.co ...

  2. spring 3.0 @ResponseBody注解返回中文问号乱码解决办法

    前几天给公司做项目,很久没接触java项目的我,遇到了一个问题,就是我在利用异步到控制器中查询,然后返回jaon字符串到前台,字符串中包含中文,于是我直接用了@ResponseBody注解,来返回到前 ...

  3. 支付宝小程序与微信小程序开发功能和语法糖不同

    最近开始负责公司webapp数据打通支付宝小程序,之前已经打通了微信小程序,现在根据支付宝小程序的开发文档在之前的模板上面做修改. 在修改模板的过程中,总结一下双方功能和语法糖的不同之处. 框架: a ...

  4. sqlite3在别的目录写文件的问题

    今天碰到一个文件,就是sqlite数据不能把db创建在别的目录下.找了好久不得其解.后来换了一个sqlite jar包就好了. 原来我用的是sqlite-nested 内嵌的jar包. 换成这里的包h ...

  5. Windows10 iis10 arr webfarm

    win10安装arr提示安装失败,但是安装说明中提升iis7及以上版本,iis10却安装失败,坑爹!安装方法: 1.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSe ...

  6. input placeholder 在chrome 浏览器自动填充时,背景色覆盖原有背景图片问题。

    user-block-name, .user-block-pwd { margin-bottom: 10%; text-align: center; position: relative; } .us ...

  7. 为 Drupal 7 构建一个新主题

    主题解释了 Drupal 网站的用户界面 (UI).虽然主题结构并没有明显的变化,但 Drupal 版本 7 配备了一个新的主题实现方法.本文演示了如何创建一个新的 Drupal 7 主题. Drup ...

  8. CSS快速入门

    一.概述 层叠样式表;可以对HTML的元素,进行控制,使HTML的元素展现的效果和位置更好; 二.基本语法 css规则由两个部分构成:选择器和语句 语句规则: 1.css选择器的名称区分大小写;属性名 ...

  9. Bootstrap拟态框+支付宝首页

    任务没完成,继续来!因为刚才网不好,我辛辛苦苦打了洋洋洒洒一大堆都没了! 我们今天主要是说一个简单的由Bootstrap和HTML5结合而成的小案例: 首先:由标题可得知,这是移动端,所以需要这样一串 ...

  10. ECMAscript 变量作用域

    使用var操作符声明的变量与未使用var操作符声明的变量区别 未使用var操作符声明 function test() { message='hi'; console.log(message); } c ...