2013-03-05 66 views
4

功能檢測通常優於瀏覽器嗅探。在某些瀏覽器「支持」我正在使用的功能但JavaScript運行時間太慢的情況下,我該怎麼辦?檢測瀏覽器對於站點是否足夠快

我正在使用d3庫進行一些複雜的可視化。 Chrome/firefox中的可視化非常流暢,在IE9中可以接受,而在IE8中運行緩慢。我想爲IE8用戶顯示一條標語,告訴他們升級,並向IE9用戶發佈一條通知,告訴他們Chrome或FF的速度會更快。通過用戶代理嗅探來做到這一點很不好?

+0

你可以要求他們使用chromeframe,對於初學者:https://developers.google.com/chrome/chrome-frame/ – PlantTheIdea 2013-03-05 21:46:35

+0

好點;值得在橫幅中包含該鏈接。沒有解決我什麼時候顯示橫幅的問題(除非我只是使用任何版本的IE顯示給大家,這似乎有點笨重) – spike 2013-03-05 21:48:16

+0

哦,它不是爲了解決問題,它只會減少可能會遇到它的人數。我將它展示給在我的網站上使用IE的每個人,他們似乎並不介意。比使用IE8的Javascript渲染器更好。 :) – PlantTheIdea 2013-03-05 21:49:48

回答

2

爲什麼不測量瀏覽器計算複雜的時間,類似於您想要做的事情,併爲其設置閾值時間?

function detectBrowserSpeed(){ 

    var i, 
     slowThreshold = 100; // milliseconds 
     startMillis = + new Date(); //The + is to 'force' casting to an integer representing EPOCH milliseconds. If + is ommited, then I get an instance of Date. 

    //Do something complex here: 
    for (i=0;i<100000;i+=0.1){ 

    } 

    var elapsed = (+ new Date()) - startMillis; 
    if(elapsed > slowThreshold){ 
     return 'slow'; 
    }else{ 
     return 'fast'; 
    } 

} 
+0

這真的很有趣。計時可視化渲染並將其與某個可接受的閾值進行比較。我會給它一個鏡頭。 – spike 2013-03-05 22:06:08

+0

你可以在startMillis = + new Date()中爲'+'添加註釋嗎? – spike 2013-03-05 22:07:18

+0

我可以在兩個事件中忽略'+ new Date()'中的'+',但是這個想法是明確的,我在毫秒級上運行。 – DanC 2013-03-05 22:12:09