2013-11-04 25 views
1

使用JavaScript檢測Trident 6.0+的最佳方法是什麼?我知道瀏覽器檢測是壞的,但我正在構建一個需要在Trident 6.0+上運行的Web應用程序,因爲性能方面的原因。您不能使用Modernizr來檢測佈局引擎中的性能。由於性能原因檢測Trident 6+

我並不擔心的可靠性的檢測,因爲如果用戶足夠了解JavaScript檢測,那麼我相信他們會明白,如果Web應用程序無法正常工作。 ;)

我迄今爲止嘗試:

var ua = navigator.userAgent; 
isTri6 = ua.match(/Trident\/6/i); 
isTri7 = ua.match(/Trident\/7/i); 
if(!isTri6 | !isTri7) { console.warn("Not running on Trident 6+"); } 

這不會引發任何錯誤,但它警告爲Chrome,Firefox和IE10 & IE11控制檯。 (它不應該警告IE10 +)如果你有辦法不使用用戶代理(如條件註釋),請告訴我。我也嘗試過使用條件註釋,但以相同的結果結束。

任何輸入將不勝感激!

+0

舊版本的哪種性能太慢?檢測速度太慢的實現的最好方法是在代碼加載時運行某種性能測試,看看它是否表現不佳。這可以捕捉任何速度較慢的瀏覽器,並且可以在舊版瀏覽器上執行效果更好的polyfill實現。 –

+0

@DaveMethvin沒有那種表現。我在談論Windows 8(IE10和IE11)上的文本渲染以及具體的Javascript性能。我正在使用Windows 8操作系統原生的東西構建一個實驗性Web應用程序。 –

回答

1

首先,你可能想扔的警告時,代理人不三叉戟6,而不是三叉戟7:

if(!isTri6 && !isTri7) { ... } 

舊的條件被觸發,如果代理人是不是三叉戟6 不三叉戟7,一直如此。其次,Chrome和Firefox會發出警告,因爲任何人都不會使用Trident佈局引擎!您可能需要相應地修改您的條件。

+0

謝謝,這解決了它! –