判断终端的类型、安卓、ios、微信、qq

function  GetMobelType()  {                
var  browser  =   {                    
versions:   function()  {                        
var  u  =  window.navigator.userAgent;                        
return  {                            
trident:  u.indexOf('Trident')  >  -1, //IE内核
presto:  u.indexOf('Presto')  >  -1, //opera内核
Alipay:  u.indexOf('Alipay')  >  -1, //支付宝
webKit:  u.indexOf('AppleWebKit')  >  -1, //苹果、谷歌内核
gecko:  u.indexOf('Gecko')  >  -1  &&  u.indexOf('KHTML')  ==  -1, //火狐内核
mobile:  !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
ios:  !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android:  u.indexOf('Android')  >  -1  ||  u.indexOf('Linux')  >  -1, //android终端或者uc浏览器
iPhone:  u.indexOf('iPhone')  >  -1  ||  u.indexOf('Mac')  >  -1, //是否为iPhone或者安卓QQ浏览器
//iPhone: u.match(/iphone|ipod|ipad/),//
iPad:  u.indexOf('iPad')  >  -1, //是否为iPad
webApp:  u.indexOf('Safari')  ==  -1, //是否为web应用程序,没有头部与底部
weixin:  u.indexOf('MicroMessenger')  >  -1, //是否为微信浏览器
qq: u.match(/\sQQ/i) == " qq", //是否QQ
Safari:  u.indexOf('Safari')  >  -1,
  ///Safari浏览器,                         
};                    
}()                
};                
return  browser.versions;            
}

  截取浏览器地址拼接参数

//截取地址
function GetRequest(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r != null) {
return unescape(r[2]);
} else {
return null;
} }

  跳转到app市场,以微信的为例

//跳转到app市场
var appstore, ua = navigator.userAgent;
if(ua.match(/Android/i)) {
appstore = 'market://search?q=com.singtel.travelbuddy.android';
}
if(ua.match(/iphone|ipod|ipad/)) {
appstore = "https://itunes.apple.com/cn/app/wei-xin/id414478124?mt=8&ign-mpt=uo%3D4";
}
function applink(fail) {
return function() {
var clickedAt = +new Date;
setTimeout(function() {
// To avoid failing on return to MobileSafari, ensure freshness!
if(+new Date - clickedAt < 2000) {
window.location = fail;
}
}, 500);
};
}
$('.footer')[0].onclick = applink(appstore);
//

  在h5页面跳转打开新的app,进行判断(目前还有点小问题,如果有app会打开,再回来这个界面会展示下载的界面)

function jump(myurl) {	与上面判断ios的方法结合
if(GetMobelType.weixin) {
alert("是微信啊");// 水土不服就服微信 微信比较牛 第三方app必须在应用宝发布,且开通‘微下载’服务
} else {
if(GetMobelType.android) {
var ifr = document.createElement('iframe');
ifr.src = myurl;
ifr.style.display = 'none';
document.body.appendChild(ifr);
//window.location.href = "你要打开的app协议,安卓提供";
window.setTimeout(function() {
document.body.removeChild(ifr);
window.location.href = "下载app的地址";
}, 3000);
}
if(GetMobelType.ios || GetMobelType.iPhone || GetMobelType.iPad) {
alert(222);
var ifr = document.createElement("iframe");
ifr.src = "打开app的协议"; /***打开app的协议,有ios同事提供***/
ifr.style.display = "none";
document.body.appendChild(ifr);
window.setTimeout(function() {
document.body.removeChild(ifr);
     window.location.href = "下载地址";
/***下载app的地址***/
}, 2000)
};
}
}

  处理iframe引入微信的文章防盗链的问题 (这个在微信浏览器打开的时候,会有卡死的现象)

	$.ajaxPrefilter(function(options) {
if (options.crossDomain && jQuery.support.cors) {
var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
}
});
var share_link = that.list.outsideUrl;
console.log(share_link)
//微信文章地址
$.get(
share_link,
function(response) {
// console.log("> ", response);
var html = response;
html = html.replace(/data-src/g, "src");
var html_src = 'data:text/html;charset=utf-8,' + html;
that.list.outsideUrl = html_src;
});

  

ios存在唤起的时候出现原生弹窗的问题,现在接入了第三方,已解决

判断终端类型、微信的文章防盗链、h5页面跳转打开新的app、跳转到app市场的更多相关文章

  1. 微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法(转)

    最近在做微信公众号的内嵌页面,发现点击输入框时键盘盖住文本框,找到一段代码解决了这个问题. iOS和android手机都已亲测,需要的可以直接拷贝到代码中使用. js代码如下: $(function ...

  2. 微信小程序内联h5页面,实现分享

    在小程序内直联h5的页面(pages/webview/webview.js),该页面为<web-view>的容器,使用<web-view>组件 <web-view wx: ...

  3. 微信公众号开发之H5页面跳转到指定的小程序

    前言: 最近公司有一个这样的需要,需要从我们在现有的公众号H5页面中加一个跳转到第三方小程序的按钮.之前只知道小程序之间是可以相互跳转的,今天查阅了下微信开发文档原来现在H5网页也支持小程序之间的跳转 ...

  4. 微信图片反防盗链 用js不太成熟的解决方式 仅供参考

    $("#imgDiv img").each(function () { var img = $(this); var img_src = img.attr("src&qu ...

  5. Nginx 之四: Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能

    一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...

  6. Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能

    一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...

  7. 11.25-11.27 配置防盗链,访问控制(Directory,FilesMatch)

    4月17日任务 11.25 配置防盗链 11.26 访问控制Directory 11.27 访问控制FilesMatch 扩展 几种限制ip的方法 http://ask.apelearn.com/qu ...

  8. 教你判断一个APP页面是原生的还是H5页面 。(还没看)

    来源:https://www.25xt.com/appdesign/11851.html 刚好是周末,无意之间学堂君在收集相关资料的时候,发现有部分童鞋在问<如何判断一个APP页面是不是H5页面 ...

  9. 企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET

    先看效果 1.本文演示的是微信[企业号]的H5页面微信支付 2.本项目基于开源微信框架WeiXinMPSDK开发:https://github.com/JeffreySu/WeiXinMPSDK 感谢 ...

随机推荐

  1. 用Jedis调用Lua脚本来完成redis的数据操作

    1.先完成一个简单的set/get操作 package com.example.HnadleTaskQueue; import redis.clients.jedis.Jedis; import ja ...

  2. leetcode1031

    class Solution(object): def getMaxByCount(self,A,maxlen): curmax = 0 curmax = sum(A[:maxlen]) bigmax ...

  3. 图释SQL的Join

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...

  4. SQL Server与MySQL在“存在则更新,不存在则插入”并发处理上的一些差异。

    “存在则更新,不存在则插入的逻辑”并发情况下的处理 在sqlserver中: 在sqlserver中,是通过可序列化隔离级别+排它锁的方式来锁定一个范围来实现的当前锁定一个不存在的记录的时候,sqls ...

  5. spring boot+kafka整合

    springboot版本是2.0.4 首先,在maven中引入spring-kafka的jar包 <dependency> <groupId>org.springframewo ...

  6. DJango 基础 (1)

    django基础 知识点: 基本认知 工具准备 新建项目 目录及文件说明 开发服务器 创建视图函数 新建应用(app) 1.基本认知 Django是用Python开发的一个免费开源的Web框架,可以用 ...

  7. 【Django】关于上传图片遇到的问题

    今天测试上传图片的时候,发现一只报错说找不到文件:FileNotFoundError 通过检查路径的输出,发现首先在settings配置路径的时候有问题 MEDIA_ROOT=os.path.join ...

  8. 利用JS自动打开页面上链接的实现代码

    在这里做一下简单记录,防止自己忘记. 下面是实现自动点击打开链接的主要函数,功能不再细说,防止太多人滥用,有心的人一看就会明白,改把改把就是一个邪恶的程序: function randopen() { ...

  9. windows、Linux同步外网NTP服务器时间

    配置 Windows 时间服务以使用外部时间源 要将内部时间服务器配置为与外部时间源同步,请使用以下方法之一: 软件自动配置  Windows 时间服务 若要自动修复此问题,请单击“下载”按钮. 在“ ...

  10. JS数组存储(两个数组相等,一个改变,另一个跟着改变)

    数组是一种引用数据类型,数组引用变量只是一个引用,数组元素和数组变量在内存里是分开存放的实际的数组元素被存储在堆(heap)内存中:数组引用变量是一个引用类型的变量,被存储在栈(stack)内存中. ...