2013-03-05 4 views
4

일반적으로 브라우저 스니핑보다 기능 감지가 더 좋습니다. 특정 브라우저가 사용하고있는 기능을 "지원"하지만 자바 스크립트 런타임이 너무 느린 경우 어떻게해야합니까?브라우저가 사이트에 대해 충분히 빠르다는 것을 탐지

몇 가지 복잡한 시각화에 d3 라이브러리를 사용하고 있습니다. 시각화는 chrome/firefox에서 매우 부드럽고 IE9에서 허용되며 IE8에서는 느리게 작동합니다. IE8 사용자에게 업그레이드하라는 배너와 IE9 사용자에게 경고 배너를 표시하여 크롬이나 FF가 더 빠를 것이라고 말하고 싶습니다. 사용자 에이전트 스니핑을 통해이 작업을 수행하는 것이 좋지 않습니까?

+0

chromeframe을 사용해달라고 요청할 수 있습니다. https://developers.google.com/chrome/chrome-frame/ – PlantTheIdea

+0

좋은 지적; 그것은 배너에 그 링크를 포함시키는 것이 가치가 있습니다. 배너를 표시 할 때 내 문제를 해결하지 못한다. (조금이라도 무거운 것처럼 보이는 IE의 모든 버전을 사용하는 모든 사람들에게 보여주지 않는 한) – spike

+0

오 문제가 해결되지 않았으므로 그냥 줄이겠다. 시작하기 위해 발생할 수있는 잠재적 인 사람 수. 나는 내 사이트에서 IE를 사용하여 모든 사람에게 보여 주지만 마음에 들지 않습니다. IE8의 Javascript 렌더러를 사용하는 것보다 낫습니다. :) – PlantTheIdea

답변

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

+0

startMillis = + new Date()에서'+'에 대한 코멘트를 추가 할 수 있습니까? – spike

+0

양쪽 모두에서'+ new Date()'에'+'를 생략 할 수는 있지만 밀리 초 단위로 작업한다는 것을 명시하는 것이 좋습니다. – DanC