2014-09-08 7 views
4

나는 이미 대답을 알고 있을까 두려워하지만 위험 할 수도 있습니다. 웹 사이트에 액세스하는 클라이언트가 다음과 같은지 테스트 할 수있는 방법이 있는지 알고 있습니까? 씬 클라이언트 (데스크톱 터미널) 또는 아닙니다? 여기서 문제는 JavaScript (애니메이션) 사용을 고려해 보면 씬 클라이언트가 끔찍하게 지연되기 시작한다는 것입니다.howto : 클라이언트가 "데스크톱 터미널"인지 테스트합니다.

나는 기본적으로 웹 사이트의 "밝은"버전을 제공하고자하는데, 여기서는 클라이언트에 따라 모든 특수 효과를 비활성화합니다. 사용자 에이전트를 살펴 봤지만 유용하지 않은 것을 제공하지는 않습니다.

말할 방법이 있습니까?

+0

진정한 진정한 문제는 여기에 있습니다. 사이트에서 일부 자바 스크립트 애니메이션을 사용하고 완전히 비활성화하는 것은 옵션이 아닙니다. – Reborn

+0

당신의 권리와 나는 단지 그것을했습니다. 그래도 긍정적 인 답변을 기대하고 있습니다 :) – Reborn

+0

예를 들어 자바 스크립트가 사용 설정되어 있는지 감지 할 수 있습니다. –

답변

2

씬 클라이언트 또는 원격 데스크톱을위한 HTTP 헤더와 같은 것이 없기 때문에이를 해결할 수있는 확실한 방법은 없습니다.

그러나 느린 클라이언트를 식별하는 솔루션이 정말로 필요한 경우 다음을 시도해 볼 수 있습니다. 이는 Google이지도에서 클라이언트가지도를 처리 할 수 ​​있는지 판단하기 위해 사용하는 것과 유사합니다.

이 방법을 사용하면 HTML 페이지에 JavaScript가 내장되어 제공됩니다. 이 덩어리는 실제 코드와 비슷한 리소스가 많은 작업을 수행합니다.

이 작업에 소요되는 시간을 측정하고 성능이 좋은지 아닌지를 결정하십시오.

document.write으로 스크립트 태그를 만들고 실행 모드를 스크립트에 알려주거나 이미로드 된 코드를 적절한 매개 변수로 초기화하여 실제 JavaScript를로드합니다.

quick'n'dirty 구현 예는 다음과 같이 보일 것이다 (jQuery를 사용하지만,뿐만 아니라 일반 JS에서 구현 될 수있다) :

<script type="text/javascript"> 
    var 
     $elem, 
     now = new Date(), 
     isFast, 
     counter = 0; 

    while (new Date() - now < 100) 
    { 
     $elem = $('<div style="display: none">'); 
     $('body').append($elem); 
     $elem.remove(); 
     ++counter; 
    } 

    alert(counter); 
    isFast = (counter > 100); 


    // now, either embed the actual script ... 
    document.write('<scr'+'ipt type="text/javascript" src="http://www.example.com/js/test.js?fast=' + isFast + '"></scr'+'ipt>'); 

    // ... or initialize the already loaded code 
    var myControllerInstance = new MyController(isFast); 
    myControllerInstance.makeStuffHappen(); 
</script> 

섬세한 부분은 "빠른"이 무엇인지 정의하는 것입니다, 왜냐하면 타이밍 코드가 느려지는 이유가 다를 수 있기 때문입니다. 너무 많은 위음성이나 오 탐률로 끝날 수 있습니다.

EDIT : @fero에 의해 제안 된대로 JS 예제가 업데이트되었습니다. 감사!

+2

거꾸로 된 접근법을 사용하고 100ms라고 말한 다음 브라우저에서 얼마나 많은'div '를 만들었는지에 대해'div' 요소를 만드는 것이 더 좋을 것이라고 생각합니다.그렇지 않으면 성능 테스트가 너무 오래 걸릴 수 있습니다. 속도가 느린 클라이언트에서 시간이 많이 소요되는 테스트 작업을 수행하면 속도가 느린 클라이언트이기 때문에 평소보다 오래 걸릴 수도있는 페이지로드 시간이 늘어납니다. – fero

+0

좋은 지적이지만 구현하기가 훨씬 더 복잡합니다. 백그라운드 루프를 만들어서 특정 시간이 지나면 그것을 죽여야 할 것입니다. 이것은 JS로는 꽤 어렵습니다. (성능 API를 사용할 수도 있지만 일부 브라우저에서만 가능합니다.) 또는 뭔가 빠졌습니까? – lxg

+2

네, 뭔가 빠진 것 같아요. :-) 당신은'var start = new Date(), counter = 0; while (new Date() - start <100) {createStuff(); counter ++}'를 실행 한 다음 'counter'를보고 성능을 측정하십시오. – fero

-3

페이지가 데스크톱 터미널에서 열리는 지 직접적인 방법은 없지만 까다로운 방법이 있습니다. 휴대 기기 사용자보기를 항상 찾을 수 있습니다. 자바 스크립트 에서뿐만 아니라 PHP에서도 할 수 있습니다. if

function is_mobile() { 
    if (preg_match("/Mobile|Android|BlackBerry|iPhone|Windows Phone/", $_SERVER['HTTP_USER_AGENT'])) { 
    return true; 
    } 
} 

if(is_Mobile){ 
     // Mobile! 
    } else { 
     // Not mobile 
    } 

JS :

0 모바일 장치 중 어느는 U가 나는 PHP 예 코드를 게시 JS

PHP 한, 화상 가정 할 수 검출되지 않는다

사용자가 바탕 화면에서 페이지를 열면 검색하려는 모든 사용자에게 도움이되기를 바랍니다.

+0

죄송합니다, 전혀 도움이되지 않습니다. 문제는 데스크톱/모바일 장치를 감지하는 것이 아닙니다. –

+0

@SalmanA 나는보기 포트를 데스크톱이나 모바일을 찾는 데 사용합니다. 그것은 나를 위해 매력처럼 일했습니다. 그것이 전혀 도움이되지 않는 방법 – Khaleel

+0

질문을 다시 읽으십시오. OP는 웹 사이트에 액세스하는 브라우저가 원격 데스크톱 세션이나 팀 뷰어 등에서 실행 중인지 알고 싶어합니다. –