2012-03-13 104 views
0

當我的網站首次加載時,它會運行一個小腳本,用於識別用戶正在使用的設備。javascript的訂購

這個我在舊設備等的負載增加......但反過來注意到初始加載的速度卻遭遇上的所有設備(包括個人電腦)實驗。

如果我是,例如,在我的腳本的最頂端寫這行代碼:

如果iPhone,然後去到另一個javascript文件。

將每個設備仍然讀取,進入javascript文件和讀到的一切,從而浪費時間像它已經這樣做?

基本上我會看到性能的提高,如果我分手了我目前的設備識別器的腳本?

據我所知,代碼從上向下運行,但在頂部的一些設備仍然需要幾秒鐘安頓下來,不再那麼平常,像他們在整個腳本運行,因爲它是一個大文件。

+0

發佈您的設備嗅探腳本。 – 2012-03-13 12:30:08

+0

會更容易用代碼摘錄回答 – GGJ 2012-03-13 12:30:34

+0

爲什麼不讀'User-Agent'標題,並且只包含當時必需的正確腳本? (這是大多數「移動檢測」腳本所做的。 – 2012-03-13 12:31:29

回答

0

我將動態地加載額外的JS像這樣:

var isIphone = (function(){ /*determin if is iPhone, return true or false*/})(); 

if (isIphone){ 
    var iPhone_js = document.createElement('script') 
    iPhone_js.setAttribute("type","text/javascript") 
    iPhone_js.setAttribute("src","/root/to/iphone/js") 
} 
1

如果您加載腳本,它都會被它執行之前解析。因此,在腳本中添加條件只會阻止代碼實際執行,並且每次都會加載並解析代碼。

如果你想保持不想要的腳本被加載和解析,您將需要一個腳本,有條件加載另一個腳本。

0

您可以檢查客戶端是通過查看用戶代理字符串使用的是什麼設備:
http://en.wikipedia.org/wiki/User_agent

然後,你可以返回不同的HTML(包括不同的腳本)爲每個設備。

0

如果您正在使用服務器端語言在你的網站,我認爲這是最好的話,要在服務器端決定,什麼是目標設備(記住它的後續請求),那麼相應地發送JavaScript庫或文件給客戶。