2014-01-20 92 views
0

我正在使用Firefox的Modify Headers plugin以更改用戶代理程序。 我需要這樣做(測試)的原因是加載不同的CSS,具體取決於它是iOS還是Android手機。Javascript navigator.userAgent始終在Firefox中顯示相同的代理程序

運行此腳本

<script type="text/javascript"> 
    var agent = navigator.userAgent.toLowerCase(); 
    alert(agent); 
    </script> 

我總是得到這樣的輸出:

的Mozilla/5.0(窗口nt 6.1; WOW64; RV:26.0)壁虎/ 20100101 火狐/ 26.0

即使我可以在Thunderbird中看到以下內容:

用戶代理:Mozilla/5.0(iPad; CPU OS 5_1,例如Mac OS X) 爲AppleWebKit/534.46(KHTML,例如Gecko)版本/ 5.1移動/ 9B176 的Safari/7534.48.3

這是一個Firefox的具體問題?

+2

我不明白。你問,你的Firefox插件似乎不工作的事實是一個Firefox的具體問題? –

+1

是 - 或者如果錯誤地使用'navigator.userAgent'來檢測設備。 – Steven

+0

@Steven - 通常認爲使用用戶代理字符串進行設備/瀏覽器檢測是不好的做法。應該編寫代碼以適應正在運行的瀏覽器的功能,而不必使用用戶代理字符串,即使用功能檢測而不是瀏覽器檢測。像Modernizr這樣的工具可以幫助解決這個問題。 (在少數情況下瀏覽器檢測可能仍然需要,但它們很少見,主要限於舊版IE) – Spudley

回答

1

通過頭文件修改用戶代理確實會更改服務器看到的UA字符串。

但是,這並不意味着您實際上正在更改瀏覽器知道的用戶代理字符串。

你正在通過javascript查詢UA字符串;這將在瀏覽器中獲得實際的UA字符串;與已發送到服務器的標題無關。

如果要正確覆蓋UA字符串,有firefox extensions that specialise in doing so。我建議你使用其中的一個,而不是通用的頭部覆蓋擴展。

+0

啊,謝謝。這很好。 – Steven

相關問題