복붙노트

[JQUERY] 인터넷 연결이 자바 스크립트에 존재하는지 확인? [복제]

JQUERY

인터넷 연결이 자바 스크립트에 존재하는지 확인? [복제]

해결법


  1. 1.특정 사건에 대한 최선의 선택이 될 수 있습니다

    특정 사건에 대한 최선의 선택이 될 수 있습니다

    바로 가까운 태그 앞에 :

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
    

    이것은 아마도 문제가 jQuery를 중심으로 주어진 가장 쉬운 방법입니다.

    좀 더 강력한 솔루션을 원하는 경우에 당신은 시도 할 수 있습니다 :

    var online = navigator.onLine;
    

    그러나이 또는 전혀 예상대로 작동하지 않을 수 있습니다 이전 버전의 웹 브라우저 그렇게 현대적인 웹 브라우저에서 가장 잘 작동된다는 점에 유의, 더 오프라인 웹 애플리케이션에 대한 W3C의 스펙에 대해 읽어보십시오.

    또한, 자신의 서버에 XHR 요청은 연결을 테스트하기위한 방법의 나쁘지 않다. 그것의 연결을 설정하는 것은 다음도 어쨌든 일상적인 사용 중에 결함이있을거야 때 XHR가 결함이있는 경우 실패의 너무 많은 점, XHR을 위해 있다는 것을 다른 답변 상태 중 하나를 고려. 귀하의 사이트가 어떠한 이유로 도달 할 수없는 경우 다른 서비스가 동일한 서버에서 실행 가능성도 도달 할 수없는 것입니다. 여부는 본인에게 달려 있습니다.

    난 google.com 그 문제에 관해서는, 누군가 다른 사람의 서비스에 XHR 요청을 권하고 싶지 않다. 전혀 서버에 요청을 만들 수 없습니다.

    "온라인"의미있는 것을 주위에 약간의 혼동이있는 것 같습니다. 그러나 때때로 당신은 "에서 대형"인터넷이나 월드 와이드 웹에 액세스 할 수없이 VPN에있어, 인터넷은 네트워크의 무리라고 생각해. 종종 회사 그러므로 당신이 "온라인"으로 간주 될 수있는 다른 외부 네트워크로 제한 연결이 자신의 네트워크를 가지고있다. 온라인된다는 것은 단지 당신이, 네트워크에 연결을 시도하는 서비스를하지 가능성도 도달을 연결되어 있는지 수반한다.

    호스트가 네트워크에서 도달 할 수 있는지 확인하려면, 당신이 할 수 있습니다 :

    function hostReachable() {
    
      // Handle IE and more capable browsers
      var xhr = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" );
    
      // Open new request as a HEAD to the root hostname with a random param to bust the cache
      xhr.open( "HEAD", "//" + window.location.hostname + "/?rand=" + Math.floor((1 + Math.random()) * 0x10000), false );
    
      // Issue request and handle response
      try {
        xhr.send();
        return ( xhr.status >= 200 && (xhr.status < 300 || xhr.status === 304) );
      } catch (error) {
        return false;
      }
    
    }
    

    또한 여기에 대한 요점을 찾을 수 있습니다 https://gist.github.com/jpsilvashy/5725579

    지역의 구현에 대한 세부 사항

    어떤 사람들은 "나는 항상 false를 반환하고있어"댓글을 달았습니다. 당신은 아마 당신의 로컬 서버에 그것을 테스트하고 있기 때문이다. 당신이 요청을하든 서버, 당신은 당신이 원하는 경우에 당연히 GET으로 변경 될 수 있음을, 헤드 요청에 응답 할 수 있도록해야합니다.


  2. 2.좋아, 어쩌면 늦게 게임에 비트하지만 온라인 이미지와 함께 확인에 대한? 나는 OP 요구는 그가 구글 CMD 또는 로컬 JQ의 사본을 잡아 필요가 있는지 알고 의미하지만 브라우저 상관없이 자바 스크립트를 읽을 수 없습니다 의미하지는 않습니다, 그렇죠?

    좋아, 어쩌면 늦게 게임에 비트하지만 온라인 이미지와 함께 확인에 대한? 나는 OP 요구는 그가 구글 CMD 또는 로컬 JQ의 사본을 잡아 필요가 있는지 알고 의미하지만 브라우저 상관없이 자바 스크립트를 읽을 수 없습니다 의미하지는 않습니다, 그렇죠?

    <script>
    function doConnectFunction() {
    // Grab the GOOGLE CMD
    }
    function doNotConnectFunction() {
    // Grab the LOCAL JQ
    }
    
    var i = new Image();
    i.onload = doConnectFunction;
    i.onerror = doNotConnectFunction;
    // CHANGE IMAGE URL TO ANY IMAGE YOU KNOW IS LIVE
    i.src = 'http://gfx2.hotmail.com/mail/uxp/w4/m4/pr014/h/s7.png?d=' + escape(Date());
    // escape(Date()) is necessary to override possibility of image coming from cache
    </script>
    

    그냥 내 2 센트


  3. 3.오년 이상 버전 :

    오년 이상 버전 :

    이 페이지에서 설명하는 다른 방법의 본격 비교에 들어갈하지 않으려면 오늘, 당신을위한 JS 라이브러리이있다.

    의에 이러한 https://github.com/hubspot/offline입니다. 그것은 기본적으로 당신의 파비콘으로, 미리 정의 된 URI의 연결을 확인합니다. 그것은 자동으로 사용자의 연결이 다시 설정되었을 때 감지하고 깔끔한 이벤트가 당신이 당신의 UI를 업데이트하기 위해 결합 할 수있는, 아래로 좋아하고 있습니다.


  4. 4.당신은 Ping 명령을 모방 할 수 있습니다.

    당신은 Ping 명령을 모방 할 수 있습니다.

    사용 아약스 프로그래머는 응답이 다시 시도하지 않는 경우, 5 초로의 setTimeout을 사용하여 타이머를 정의, 자신의 서버에 타임 스탬프를 요청할 수 있습니다.

    4 개 시도에 응답이없는 경우, 당신은 인터넷이 다운 가정 할 수 있습니다.

    그래서 당신은 1 삼분 같은 일정한 간격이 루틴을 사용하여 확인할 수 있습니다.

    그것은 나에게 좋은 깨끗한 솔루션을 보인다.


  5. 5.전송 XHR은 몇 번을 요청함으로써 당신은 시도 할 수 있습니다, 당신이 오류를 얻을 경우 그것은 인터넷 연결에 문제가 있다는 뜻.

    전송 XHR은 몇 번을 요청함으로써 당신은 시도 할 수 있습니다, 당신이 오류를 얻을 경우 그것은 인터넷 연결에 문제가 있다는 뜻.

    편집 : 나는, 그래도 난 그것을 테스트하지 않았다 당신이 무엇을 요구하고있는이 JQuery와 스크립트를 발견했다.


  6. 6.나는이 일을위한 jQuery 플러그인을 썼다. (즉, 이미 웹에서 한 번로드 있기 때문에) 또는 인수로 사용할 수있는 URL을 지정할 수 있습니다 기본적으로 현재의 URL을 확인합니다. 그것은 다른 시간에 다른 나라에서 차단 있기 때문에 항상 구글에 요청을하는 것은 좋은 생각이 아니다. 또한 특정 바다 / 날씨 앞 / 정치 기후에서 연결이 그 날처럼 될 일의 자비 수 있습니다.

    나는이 일을위한 jQuery 플러그인을 썼다. (즉, 이미 웹에서 한 번로드 있기 때문에) 또는 인수로 사용할 수있는 URL을 지정할 수 있습니다 기본적으로 현재의 URL을 확인합니다. 그것은 다른 시간에 다른 나라에서 차단 있기 때문에 항상 구글에 요청을하는 것은 좋은 생각이 아니다. 또한 특정 바다 / 날씨 앞 / 정치 기후에서 연결이 그 날처럼 될 일의 자비 수 있습니다.

    http://tomriley.net/blog/archives/111


  7. 7.나는 인터넷 연결이 존재하는지 확인하려면 여기를 작동 해결책을 가지고 있습니다 :

    나는 인터넷 연결이 존재하는지 확인하려면 여기를 작동 해결책을 가지고 있습니다 :

    $.ajax({
        url: "http://www.google.com",
        context: document.body,
        error: function(jqXHR, exception) {
            alert('Offline')
        },
        success: function() {
            alert('Online')
        }
    })
    

  8. 8.특정 서버가 다운 경우 실패 할 수 있기 때문에 XHR 요청을 보내는 것은 좋지 않습니다. 대신, 사용은 jQuery를 자신의 캐시 된 버전 (들)을로드 할 API 라이브러리를 구글의.

    특정 서버가 다운 경우 실패 할 수 있기 때문에 XHR 요청을 보내는 것은 좋지 않습니다. 대신, 사용은 jQuery를 자신의 캐시 된 버전 (들)을로드 할 API 라이브러리를 구글의.

    당신은로드 jQuery를 한 후 콜백을 수행하기 위해 구글의 API를 사용할 수 있으며, jQuery를 성공적으로로드 된 경우이 확인됩니다. 코드와 같은 뭔가가 아래에 작동합니다 :

    <script type="text/javascript">
        google.load("jquery");
    
        // Call this function when the page has been loaded
        function test_connection() {
            if($){
                //jQuery WAS loaded.
            } else {
                //jQuery failed to load.  Grab the local copy.
            }
        }
        google.setOnLoadCallback(test_connection);
    </script>
    

    구글 API 문서는 여기에서 찾을 수 있습니다.


  9. 9.훨씬 간단한 해결책 :

    훨씬 간단한 해결책 :

    <script language="javascript" src="http://maps.google.com/maps/api/js?v=3.2&sensor=false"></script>
    

    나중에 코드 :

    var online;
    // check whether this function works (online only)
    try {
      var x = google.maps.MapTypeId.TERRAIN;
      online = true;
    } catch (e) {
      online = false;
    }
    console.log(online);
    

    온라인 구글 스크립트가로드되지 않습니다하지 않는 경우 따라서 예외가 발생합니다 오류가 발생.

  10. from https://stackoverflow.com/questions/2384167/check-if-internet-connection-exists-with-javascript by cc-by-sa and MIT license