由於有的瀏覽器是禁止在js里面直接用location跳到app地址的,所以統一用一個彈框提示用戶要不要跳到app,確定按鈕是一個a標簽,地址是app那邊設置的可以通過鏈接打開app的地址;
需要打開app的地方調用自己封裝的打開彈框的方法 ,這里就是彈出一個確認框可以用自己的;通過頁面可見性的改變事件來處理是否安裝了app;
用到的知識點 visibilitychange :https://developer.mozilla.org/zh-CN/docs/Web/API/Document/visibilitychange_event
toShowConfirmLay(“要打開app嗎?”);
//跳app的取消框 var hiddenPro = 'hidden' in document ? 'hidden' : 'webkitHidden' in document ? 'webkitHidden' : 'mozHidden' in document ? 'mozHidden' : null; var appTime = null //兼容不同的瀏覽器 var changeEvent = hiddenPro.replace(/hidden/i,'visibilitychange') //窗口是否可見事件變化的回調函數 function isGoApp(){ if(!document[hiddenPro]){ //留在了當前頁面 }else{ //跳到了app把提示要下載app的定時器去掉不需要提示了,把窗口監聽去掉 clearTimeout(appTime) document.removeEventListener(changeEvent,isGoApp) } }; //跳app的確認框 $(document).on("click", ".sure", function () { toHideConfirmLay(); //隱藏彈框 document.addEventListener(changeEvent,isGoApp) //點擊確認后就開始監聽這個窗口可見改變的事件 appTime = setTimeout(function(){//設置一個定時器提示要下載app,如果有app的話在上面的回調函數把這個定時器清除不觸發 document.removeEventListener(changeEvent,isGoApp)lopdealsToast("text","請先安裝app",3000,function(){ //需要下載的app的下載地址 location.href="https://play.google.com/store/apps/details?''''" }) },2000) }); $(document).on("click", ".cancel", function () { //是否跳到app的取消按鈕的點擊事件,把彈框去掉 toHideConfirmLay(); });