복붙노트

[JQUERY] JavaScript / jQuery 체크 브로지지 링크를 확인하십시오

JQUERY

JavaScript / jQuery 체크 브로지지 링크를 확인하십시오

해결법


  1. 1.파일이 동일한 도메인에있는 경우 AEX Sexton이 말했듯이 Ajax를 사용하여 존재 여부를 테스트 할 수 있습니다. 그러나 GET 메서드를 사용해서는 안됩니다. 예상 값 (200 또는 400 미만)의 HTTP 상태를 확인해야합니다.

    파일이 동일한 도메인에있는 경우 AEX Sexton이 말했듯이 Ajax를 사용하여 존재 여부를 테스트 할 수 있습니다. 그러나 GET 메서드를 사용해서는 안됩니다. 예상 값 (200 또는 400 미만)의 HTTP 상태를 확인해야합니다.

    관련 질문에서 제공하는 간단한 방법은 다음과 같습니다.

    function urlExists(url, callback) {
      var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
          callback(xhr.status < 400);
        }
      };
      xhr.open('HEAD', url);
      xhr.send();
    }
    
    urlExists(someUrl, function(exists) {
        console.log('"%s" exists?', someUrl, exists);
    });
    

  2. 2.문제는 JavaScript가 동일한 원본 정책을 가지고 있으므로 다른 도메인에서 콘텐츠를 가져올 수 없습니다. 이것은 upvoting (17 votes에 대해 궁금해 함)에 의해 변하지 않을 것입니다. 나는 당신이 외부 링크를 위해 그것을 필요로한다고 생각하므로 .js와 함께 불가능합니다 ...

    문제는 JavaScript가 동일한 원본 정책을 가지고 있으므로 다른 도메인에서 콘텐츠를 가져올 수 없습니다. 이것은 upvoting (17 votes에 대해 궁금해 함)에 의해 변하지 않을 것입니다. 나는 당신이 외부 링크를 위해 그것을 필요로한다고 생각하므로 .js와 함께 불가능합니다 ...


  3. 3.파일이 외부 웹 사이트에 없으면 각 파일에 대해 AJAX 요청을 시도 할 수 있습니다. 그것이 실패로 돌아 오면 그것이 존재하지 않는다는 것을 알고 있지만, 그렇지 않으면, 그렇지 않으면 주어진 임계 값보다 더 오래 걸리지 않으면 반환 할 임계 값보다 오래 걸릴 수 있습니다. 항상 완벽하지는 않지만 일반적으로 'FileNotFound'요청은 빠릅니다.

    파일이 외부 웹 사이트에 없으면 각 파일에 대해 AJAX 요청을 시도 할 수 있습니다. 그것이 실패로 돌아 오면 그것이 존재하지 않는다는 것을 알고 있지만, 그렇지 않으면, 그렇지 않으면 주어진 임계 값보다 더 오래 걸리지 않으면 반환 할 임계 값보다 오래 걸릴 수 있습니다. 항상 완벽하지는 않지만 일반적으로 'FileNotFound'요청은 빠릅니다.

    var threshold   = 500,
        successFunc = function(){ console.log('It exists!'); };
    
    var myXHR = $.ajax({
      url: $('#checkme').attr('href'),
      type: 'text',
      method: 'get',
      error: function() {
        console.log('file does not exist');
      },
      success: successFunc
    });
    
    setTimeout(function(){
      myXHR.abort();
      successFunc();
    }, threshold);
    

  4. 4.Sebastian과 마찬가지로 동일한 원점 정책으로 인해 불가능할 것이라고 말합니다. 사이트가 공개 도메인에서 게시 (일시적으로) 게시 될 수있는 경우 링크 검사기 서비스 중 하나를 사용할 수 있습니다. 나는 checkerr.org 뒤에있다

    Sebastian과 마찬가지로 동일한 원점 정책으로 인해 불가능할 것이라고 말합니다. 사이트가 공개 도메인에서 게시 (일시적으로) 게시 될 수있는 경우 링크 검사기 서비스 중 하나를 사용할 수 있습니다. 나는 checkerr.org 뒤에있다


  5. 5.당신은 $ .ajax를 할 수 있습니다. 파일이없는 경우 404 오류가 발생하면 오류 콜백에서 필요한 모든 것을 수행 할 수 있습니다 (UI-WISE). 물론 요청을 트리거하는 방법은 다음과 같습니다. 물론 일부 서버 측 코딩을 수행 할 수있는 경우 단일 Ajax 요청을 수행 할 수 있습니다. 디렉토리를 스캔 한 다음 JSON이라는 이름으로 결과를 반환합니다.

    당신은 $ .ajax를 할 수 있습니다. 파일이없는 경우 404 오류가 발생하면 오류 콜백에서 필요한 모든 것을 수행 할 수 있습니다 (UI-WISE). 물론 요청을 트리거하는 방법은 다음과 같습니다. 물론 일부 서버 측 코딩을 수행 할 수있는 경우 단일 Ajax 요청을 수행 할 수 있습니다. 디렉토리를 스캔 한 다음 JSON이라는 이름으로 결과를 반환합니다.


  6. 6.다른 사람들이 언급했듯이, JavaScript의 동일한 원점 정책으로 인해 받아 들여진 답변에서 기능을 사용하는 것은 작동하지 않습니다. 이 해결 방법은 프록시 서버를 사용하는 것입니다. 자신의 프록시를 사용할 필요가 없으므로이 서비스를 사용할 수 있습니다. 예 : https://cors-escape.htrokuapp.com (여기서는 여기).

    다른 사람들이 언급했듯이, JavaScript의 동일한 원점 정책으로 인해 받아 들여진 답변에서 기능을 사용하는 것은 작동하지 않습니다. 이 해결 방법은 프록시 서버를 사용하는 것입니다. 자신의 프록시를 사용할 필요가 없으므로이 서비스를 사용할 수 있습니다. 예 : https://cors-escape.htrokuapp.com (여기서는 여기).

    코드는 다음과 같습니다.

    var proxyUrl = "https://cors-anywhere.herokuapp.com/";
    
    function urlExists(url, callback) {
      var sameOriginURL = proxyUrl + url;
      var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
          callback(xhr.status < 400);
        }
      };
      xhr.open('HEAD', sameOriginURL);
      xhr.send();
    }
    
    urlExists(someUrl, function(exists) {
      console.log('"%s" exists?', someUrl, exists);
    });
    
  7. from https://stackoverflow.com/questions/1591401/javascript-jquery-check-broken-links by cc-by-sa and MIT license