首頁  >  文章  >  web前端  >  詳解關於laydate.js載入laydate.css路徑錯誤問題

詳解關於laydate.js載入laydate.css路徑錯誤問題

小云云
小云云原創
2017-12-27 14:01:134217瀏覽

laydate.js是屬於Javascript系列的一款日期控制與時間插件,laydate.js支援相容IE6在內的主流瀏覽器。 laydate.js經過賢心大大的重寫之後功能越來越強大,用起來也愈漸靈活了,但是在一個基於angular+ocLazyLoad的項目中出了點問題。日期時間選擇插件laydate.js相信對大家來說都不陌生,本文主要給大家介紹了關於laydate.js載入laydate.css路徑錯誤問題解決的相關資料,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作有一定的參考學習價值,需要的朋友們下面來一起看看吧。

發現問題

laydate.js是透過ocLazyLoad非同步載入引入的,結果始終載入不出來laydate.css文件,看了下路徑錯誤,於是扒開程式碼發現是這樣寫的:

getPath:function(){
 var e=document.scripts,
 t=e[e.length-1],
 n=t.src;
 if(!t.getAttribute("merge"))
 return n.substring(0,n.lastIndexOf("/")+1)
}()

它是需要先取得到laydate.js的路徑,然後再加上laydate.css的那一截最終拼接成一個完整的路徑。

作者用的取得laydate.js路徑的想法是:由於判斷路徑的js程式碼一般都直接放在js檔案中而不是函數中,所以當載入該js檔案時會立即執行其中的語句,而執行此語句時所獲取到的js檔案數目正好是e.length-1,因為頁面後面的js檔案還沒有加載,所以該處的js檔案取得的數目並不是頁面所有的js文件的數目。這樣一來,取得路徑就無需再遍歷了,而且文件判斷也無需文件名,判斷更加準確(e.length-1永遠都是其文件本身)。

但是這種方法有缺陷,直接在html頁面中用script標籤引入沒得問題,如果透過document.write("