1. 程式人生 > >js解決按需引入檔案(IOS11引入fastclick有bug)

js解決按需引入檔案(IOS11引入fastclick有bug)

首先,為什麼會提出這個問題

在用jquery-weui開發的時候,當時還沒有IOS11,所以引入FastClick完全沒出現過問題,一兩個月後就有客戶反饋說(此時是加入fastclick的),(而且已經進入後臺開發了)點選tab切換有問題(忘了這個問題描述是啥了),然後(後臺問了一些細節,)花了很久才知道是IOS11的系統已經修復了點選延遲幾百毫秒的問題,所以提出“ IOS11 已經解決了點選延遲的問題,引入 fastclick 反而會導致頁面在 IOS 下面點選失靈;IOS 11 以下還需要引入 fastclick ,11 開始不用的問題”,然後讓前端(=。=也就是我)解決一下。

參考

解決

在<head>書寫

<!-- 判斷ios版本 -->
<script>
    var str= navigator.userAgent.toLowerCase(); 
    var ver=str.match(/cpu iphone os (.*?) like mac os/);
    if(!ver){//非IOS系統
        // 引入fastclick檔案
        includeFastclickJsFile();
    }else{
        console.log("你當前的Ios系統版本為:"+ver[1].replace(/_/g,"."));
        if(parseInt(ver[1])>=11){
            //不必引入fastclick檔案
        }else{
            // 引入fastclick檔案
            includeFastclickJsFile();
        }
    }

    function includeFastclickJsFile(){
        var oHead = document.getElementsByTagName('HEAD').item(0);  
        let fastclick= document.createElement("script");
        let fastclickAttach = document.createElement("script");
        fastclick.type = "text/javascript";  
        fastclick.src="../static/jq_weui/1.0.0/lib/fastclick.js";  
        fastclickAttach.type = "text/javascript";  
        fastclickAttach.src="../static/lib/fastClick/fastclick_attach.js";  
        oHead.appendChild(fastclick);
        oHead.appendChild(fastclickAttach);
    }
</script>

fastclick.js檔案不用說

fastclick_attach.js檔案是這樣的↓

$(function() {
    FastClick.attach(document.body);
});

總結

還從來沒解決過這種問題,都忘了document.createElement(“script”)(雖然知道這個方法);這樣來按需引入script檔案的。