爲了提高app的曝光和app的用戶新增,添加H5分享頁的應用場景是必不可少的,可是各類平臺環境不一,要如何兼容和策略處理。下面會一一說明html
代碼實現android
export const locationCallAPP = (url, downloadUrl, ios9Type) => { location.href = url var timeout var t = Date.now() var interval = ios9Type ? 2500 : 1000 timeout && clearTimeout(timeout) timeout = setTimeout(function() { if (Date.now() - t < interval + 1000) { location.href = downloadUrl } }, interval) } export const iframeCallAPP = (url, downloadUrl, ios9Type) => { console.log('[iframeCallAPP1]'+url) var timeout var t = Date.now() var interval = ios9Type ? 2500 : 2000 timeout && clearTimeout(timeout) timeout = setTimeout(function () { if (Date.now() - t < interval+1000) { console.log('[iframeCallAPP2]'+downloadUrl) location.href = downloadUrl } }, interval) if (ios9Type) { location.href = url } var docNode = document var iframe = docNode.createElement('iframe') iframe.setAttribute('src', url) // iframe.setAttribute('target', '_self'); iframe.setAttribute('style', 'display:none') docNode.body.appendChild(iframe) setTimeout(function () { docNode.body.removeChild(iframe) }, 200) }
中間提示頁ios
嘗試調起APP,若是不能,使用setTimeout進行下載,因此須要進行處理,以下圖: $(document).on('visibilitychange webkitvisibilitychange', function() { var tag = document.hidden || document.webkitHidden; if (tag) { clearTimeout(timer); } }) $(window).on('pagehide', function() { clearTimeout(timer); })
當手機安裝了App,能調起app後就不進行下載
沒有安裝App,過了一段時間,進行下載git
H5 page call native appgithub