阻止浏览器的默认弹窗行为

var  preventDefault  = function(e) {
e = e || window.event;
if(e.preventDefault) {
e.preventDefault();
}else{
e.returnValue = false;
}
}
preventDefault();

以上的方法试过了,可以禁止手机上浏览器的弹窗的行为

 

https://segmentfault.com/a/1190000011231042

下面的方法没试过

Ios/Android h5 唤起本地APP

   

纠结两天(浏览器中唤起本地APP),一直找不到解决方案,今天总算基本搞定。

ps:吐槽一下 魔窗那篇文章,为什么就不直接把js代码开源开源,混淆后的代码看得我好恼火

参考文章:魔窗解决方案京东解决方案

首先是判断浏览器

// 判断浏览器
var Navigator = navigator.userAgent;
var ifChrome = Navigator.match(/Chrome/i) != null && Navigator.match(/Version\/\d+\.\d+(\.\d+)?\sChrome\//i) == null ? true : false; var ifAndroid = (Navigator.match(/(Android);?[\s\/]+([\d.]+)?/)) ? true : false; var ifiPad = (Navigator.match(/(iPad).*OS\s([\d_]+)/)) ? true : false; var ifiPhone = (!ifiPad && Navigator.match(/(iPhone\sOS)\s([\d_]+)/)) ? true : false; var ifIos = Navigator.match(/iPhone|iPad|iPd/i) ? true : false; var ifSafari = ifIos && Navigator.match(/Safari/); // ios 设备的版本号 var iosVersion = Navigator.match(/OS\s*(\d+)/) iosVersion = iosVersion ? (iosVersion[1] || 0) : 0; // 安卓版本号 var androidVersion = Navigator.match(/Android\s*(\d+)/) androidVersion = androidVersion ? (androidVersion[1] || 0) : 0;

android5 及以上的高版本

// 延后50毫秒
setTimeout(function() {
    location.href = ‘自定义 URL’ }, 50)

ios9 及以上的版本

setTimeout(function() {  // 必须要使用settimeout
    var a = document.createElement("a"); //创建a元素 a.setAttribute("href", ‘自定义 URL’), a.style.display = "none", document.body.appendChild(a); var t = document.createEvent("HTMLEvents"); // 返回新创建的 Event 对象,具有指定的类型。 t.initEvent("click", !1, !1) // 初始化新事件对象的属性 a.dispatchEvent(t) // 绑定事件 }, 0)

所有情况都用 iframe

document.querySelector("#" + iframe).src = ‘自定义 URL’ // 将iframe增加src

计算时差的方案打开APP

var checkOpen = function (cb){
    var _clickTime = +(new Date()); function check(elsTime) { if ( elsTime > 3000 || document.hidden || document.webkitHidden) { cb(1); } else { cb(0); } } //启动间隔20ms运行的定时器,并检测累计消耗时间是否超过3000ms,超过则结束 var _count = 0, intHandle; intHandle = setInterval(function(){ _count++; var elsTime = +(new Date()) - _clickTime; if (_count>=100 || elsTime > 3000 ) { clearInterval(intHandle); check(elsTime); } }, 20); } checkOpen(function(opened){ // APP没有打开成功 并且开启自动跳转到下载页 if(opened === 0 && option.autoRedirectToDownloadUrl){ location.href = downloadUrl; } });

猜你喜欢

转载自www.cnblogs.com/chaoyuehedy/p/9112478.html