programing

Google의 호스팅된 jQuery를 사용하는 가장 좋은 방법이지만 Google의 호스팅된 라이브러리로 다시 이동하면 실패합니다.

skycolor 2023. 5. 12. 21:57
반응형

Google의 호스팅된 jQuery를 사용하는 가장 좋은 방법이지만 Google의 호스팅된 라이브러리로 다시 이동하면 실패합니다.

Google(또는 다른 Google libs)에서 호스팅된 jQuery를 로드하지만 Google 시도가 실패할 경우 내 jQuery 사본을 로드하는 방법은 무엇입니까?

나는 구글이 엉망이라고 말하는 것이 아닙니다.구글 복사본이 차단되는 경우가 있습니다(예를 들어 이란에서).

타이머를 설정하고 jQuery 객체를 확인해야 합니까?

두 사본이 모두 나올 경우 어떤 위험이 있습니까?

"그냥 구글 것을 사용하세요" 또는 "그냥 당신 것을 사용하세요"와 같은 답을 찾는 것이 아닙니다.저는 그 주장들을 이해합니다.또한 사용자가 Google 버전을 캐시할 가능성이 높다는 것도 알고 있습니다.일반적으로 클라우드에 대한 예비 솔루션을 고려하고 있습니다.


편집: 이 부분이 추가되었습니다...

구글은 ajax 라이브러리를 로드하기 위해 구글.load를 사용할 것을 제안하고, 완료되면 콜백을 수행하기 때문에, 그것이 이 문제를 직렬화하는 열쇠인지 궁금합니다.

좀 미친 소리처럼 들리겠지만요.믿을 수 있는 방법으로 할 수 있는지 없는지 알아보고 있는 중입니다.


업데이트: jQuery는 이제 Microsoft의 CDN에서 호스팅됩니다.

http://www.asp.net/ajax/cdn/

다음과 같이 달성할 수 있습니다.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>

<script>
       window.jQuery || document.write('<script src="/path/to/your/jquery"><\/script>');
</script>

페지에합에 입니다.<head> 모든 는 "jQuery" 에 합니다.<body>오류를 방지할 수 있습니다(단, 완벽하지는 않지만!).

구글이 호스팅하는 jQuery를 사용하지 않는 또 다른 이유는 일부 국가에서는 구글의 도메인 이름이 금지되어 있기 때문입니다.

이를 위한 가장 쉽고 깔끔한 방법은 다음과 같습니다.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="path/to/your/jquery"><\/script>')</script>

이것은 저에게 효과가 있는 것 같습니다.

<html>
<head>
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
// has the google object loaded?
if (window.google && window.google.load) {
    google.load("jquery", "1.3.2");
} else {
    document.write('<script type="text/javascript" src="http://joecrawford.com/jquery-1.3.2.min.js"><\/script>');
}
window.onload = function() {
    $('#test').css({'border':'2px solid #f00'});
};
</script>
</head>
<body>
    <p id="test">hello jQuery</p>
</body>
</html>

작동 방식은 다음을 사용하는 것입니다.googlehttp://www.google.com/jsapi 호출하는 개체는 다음에 로드됩니다.window가 없으면 에 액세스할 해당 개체가 없으면 Google 액세스가 실패한 것으로 간주됩니다.에는 그런경다사로용복로컬다드니합사을본여하음우을▁copy▁using▁a▁local▁if다▁load▁we니▁thatdocument.write(이 경우에는 제 서버를 사용하고 있습니다. 이 서버를 테스트할 때는 본인 서버를 사용자 서버를 사용하십시오.

는 또한 의 존재를 검사합니다.window.google.load저는 또한 할 수 있습니다.typeof사물이 적절한 개체 또는 기능인지 확인합니다.하지만 저는 이것이 효과가 있다고 생각합니다.

테스트하던 HTML 페이지 전체를 게시한 이후로 코드 강조가 실패한 것처럼 보이므로 로딩 로직만 있습니다.

if (window.google && window.google.load) {
    google.load("jquery", "1.3.2");
} else {
    document.write('<script type="text/javascript" src="http://joecrawford.com/jquery-1.3.2.min.js"><\/script>');
}

하지만 이것이 사이트 방문자들의 우려 사항이라면 Google AJAX Libraries API를 사용해야 하는지는 잘 모르겠습니다.

재미있는 사실: 저는 처음에 시도해 보았습니다.다양한 버전에서 이에 대한 캐치 블록을 찾았지만 이처럼 깨끗한 조합을 찾을 수 없었습니다. 저는 이 아이디어의 다른 구현을 순수하게 연습으로 보는 것에 관심이 있습니다.

사이트에 modernizr.js가 포함되어 있는 경우, 내장된 yepnope.js를 사용하여 스크립트를 비동기식으로 로드할 수 있습니다. 특히 jQuery(폴백 포함).

Modernizr.load([{
    load : '//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'
},{
    test : window.jQuery,
    nope : 'path/to/local/jquery-1.7.2.min.js',
    both : ['myscript.js', 'another-script.js'],
    complete : function () {
        MyApp.init();
    }
}]);

Google-cdn에서 jQuery를 로드합니다.그런 다음 jQuery가 성공적으로 로드되었는지 확인합니다.그렇지 않은 경우("noe") 로컬 버전이 로드됩니다.또한 개인 스크립트가 로드됩니다. "둘 다"는 로드 프로세스가 테스트 결과와 독립적으로 시작되었음을 나타냅니다.

모든 로드 프로세스가 완료되면 'MyApp.init'의 경우 함수가 실행됩니다.

저는 개인적으로 비동기식 스크립트 로드 방식을 선호합니다.그리고 사이트를 구축할 때 modernizr에서 제공하는 기능 테스트에 의존하기 때문에 어쨌든 사이트에 내장되어 있습니다.그래서 실제로 오버헤드가 없습니다.

여기에는 몇 가지 훌륭한 해결책이 있지만, 저는 로컬 파일과 관련하여 한 걸음 더 나아가고 싶습니다.

Google이 실패하는 시나리오에서는 로컬 소스를 로드해야 하지만 서버의 실제 파일이 반드시 최선의 옵션은 아닐 수 있습니다.현재 동일한 솔루션을 구현하고 있기 때문에 이 문제를 제기합니다. 다만 데이터 소스에 의해 생성되는 로컬 파일로 되돌리고 싶습니다.

이것에 대한 저의 이유는 Google에서 로드하는 내용과 로컬 서버에서 로드하는 내용을 추적하는 것에 대해 생각해 보고 싶기 때문입니다.버전을 변경하려면 Google에서 로드하려는 로컬 복사본과 동기화된 상태로 유지해야 합니다.개발자가 많은 환경에서는 이 프로세스를 자동화하여 구성 파일의 버전 번호만 변경하면 됩니다.

이론적으로 작동해야 하는 제가 제안한 솔루션은 다음과 같습니다.

  • 애플리케이션 구성 파일에 라이브러리의 절대 URL, JavaScript API의 URL, 버전 번호 등 3가지를 저장합니다.
  • 라이브러리 자체의 파일 내용을 가져오고(앱 구성에서 URL을 가져옴) 이름과 버전 번호로 내 데이터 소스에 저장하는 클래스 작성
  • 내 로컬 파일을 DB에서 꺼내 버전 번호가 변경될 때까지 파일을 캐시하는 핸들러를 작성합니다.
  • 만약 그것이 (내 앱 구성에서) 변경된다면, 우리 클래스는 버전 번호를 기반으로 파일 내용을 풀하고, 그것을 내 데이터 소스에 새 레코드로 저장한 다음, 핸들러가 시동을 걸고 새로운 버전을 제공할 것입니다.

이론적으로, 만약 내 코드가 제대로 작성된다면, 내가 해야 할 일은 내 앱 구성에서 버전 번호를 바꾸고 비올라를 바꾸는 것입니다.자동화된 백업 솔루션을 사용하면 물리적 파일을 서버에 유지 관리할 필요가 없습니다.

다들 어떻게 생각해요?이것은 과잉 살상일 수도 있지만, AJAX 라이브러리를 관리하는 우아한 방법일 수도 있습니다.

도토리

if (typeof jQuery == 'undefined') {
// or if ( ! window.jQuery)
// or if ( ! 'jQuery' in window)
// or if ( ! window.hasOwnProperty('jQuery'))    

  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = '/libs/jquery.js';

  var scriptHook = document.getElementsByTagName('script')[0];
  scriptHook.parentNode.insertBefore(script, scriptHook);

}

CDN에서 Google의 복사본을 포함하려는 경우.

HTML5를 type기여하다.

사용할 수도 있습니다...

window.jQuery || document.write('<script src="/libs/jquery.js"><\/script>');

로컬 파일을 최후의 수단으로 사용할 수 있습니다.

현재 jQuery의 자체 CDN은 https를 지원하지 않는 것 같습니다.만약 그렇다면 당신은 그곳에서 먼저 로딩하고 싶을 것입니다.

자, 그 순서는 다음과 같습니다.Google CDN = > Microsoft CDN = > 로컬 복사본.

<!-- load jQuery from Google's CDN -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<!-- fallback to Microsoft's Ajax CDN -->
<script> window.jQuery || document.write('<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js">\x3C/script>')</script> 
<!-- fallback to local file -->
<script> window.jQuery || document.write('<script src="Assets/jquery-1.8.3.min.js">\x3C/script>')</script> 

조건부로 최신/레거시 jQuery 버전 및 폴백 로드:

<!--[if lt IE 9]>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="/public/vendor/jquery-legacy/dist/jquery.min.js">\x3C/script>')</script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
    <script>window.jQuery || document.write('<script src="/public/vendor/jquery/dist/jquery.min.js">\x3C/script>')</script>
<!--<![endif]-->
  • 1단계: jQuery가 로드되지 않았습니까?(체크)jQuery가변)

JavaScript에서 정의되지 않은 변수를 확인하는 방법

  • 2단계: javascript 파일을 동적으로 가져오기(백업)

다른 자바스크립트 파일에 자바스크립트 파일을 포함하려면 어떻게 해야 합니까?

구글의 금지 문제 때문에 저는 마이크로소프트의 cdn http://www.asp.net/ajaxlibrary/cdn.ashx 을 사용하는 것을 선호합니다.

ASP를 사용하는 사람들을 위한 것입니다.NET MVC 5, BundleConfig.cs 에 이 코드를 추가하여 CDN for jquery를 활성화합니다.

bundles.UseCdn = true;
Bundle jqueryBundle = new ScriptBundle("~/bundles/jquery", "//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js").Include("~/Scripts/jquery-{version}.js");
jqueryBundle.CdnFallbackExpression = "window.jQuery";
bundles.Add(jqueryBundle);


이 대답은 틀린 것으로 밝혀졌습니다.진짜 설명은 댓글을 참고해주세요.


대부분의 질문에 답했지만 마지막 부분에 대해서는 다음과 같습니다.

두 사본이 모두 나올 경우 어떤 위험이 있습니까?

딱히 없어요.대역폭을 낭비하고, 쓸모없는 두 번째 복사본을 다운로드하는 데 몇 밀리초가 걸릴 수도 있지만, 둘 다 성공하더라도 실제 피해는 없습니다.물론 위에서 언급한 기술을 사용하여 이 문제를 피해야 합니다.

JQuery가 아직 로드되지 않았다면 동적으로 로드되고 소스가 실패하면 폴백으로 진행되는 Gist를 만들었습니다. (많은 답변에서 함께 연결됨) https://gist.github.com/tigerhawkvok/9673154

제가 Gist를 계속 업데이트할 계획이지만, 이 답변은 아닙니다. 가치가 있습니다!

/* See https://gist.github.com/tigerhawkvok/9673154 for the latest version */
function cascadeJQLoad(i) { // Use alternate CDNs where appropriate to load jQuery
    if (typeof(i) != "number") i = 0;
    // the actual paths to your jQuery CDNs
    var jq_paths = [
        "ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js",
        "ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.0.min.js"
    ];
    // Paths to your libraries that require jQuery
    var dependent_libraries = [
        "js/c.js"
    ];
    if (window.jQuery === undefined && i < jq_paths.length) {
        i++;
        loadJQ(jq_paths[i], i, dependent_libraries);
    }
    if (window.jQuery === undefined && i == jq_paths.length) {
        // jQuery failed to load
        // Insert your handler here
    }
}

/***
 * You shouldn't have to modify anything below here
 ***/

function loadJQ(jq_path, i, libs) { //load jQuery if it isn't already
    if (typeof(jq_path) == "undefined") return false;
    if (typeof(i) != "number") i = 1;
    var loadNextJQ = function() {
        var src = 'https:' == location.protocol ? 'https' : 'http';
        var script_url = src + '://' + jq_path;
        loadJS(script_url, function() {
            if (window.jQuery === undefined) cascadeJQLoad(i);
        });
    }
    window.onload = function() {
        if (window.jQuery === undefined) loadNextJQ();
        else {
            // Load libraries that rely on jQuery
            if (typeof(libs) == "object") {
                $.each(libs, function() {
                    loadJS(this.toString());
                });
            }
        }
    }
    if (i > 0) loadNextJQ();
}

function loadJS(src, callback) {
    var s = document.createElement('script');
    s.src = src;
    s.async = true;
    s.onreadystatechange = s.onload = function() {
        var state = s.readyState;
        try {
            if (!callback.done && (!state || /loaded|complete/.test(state))) {
                callback.done = true;
                callback();
            }
        } catch (e) {
            // do nothing, no callback function passed
        }
    };
    s.onerror = function() {
        try {
            if (!callback.done) {
                callback.done = true;
                callback();
            }
        } catch (e) {
            // do nothing, no callback function passed
        }
    }
    document.getElementsByTagName('head')[0].appendChild(s);
}

/*
 * The part that actually calls above
 */

if (window.readyState) { //older microsoft browsers
    window.onreadystatechange = function() {
        if (this.readyState == 'complete' || this.readyState == 'loaded') {
            cascadeJQLoad();
        }
    }
} else { //modern browsers
    cascadeJQLoad();
}

Google 호스팅된 jQuery

  • IE9 이전 버전의 IE인 이전 브라우저에 관심이 있다면 가장 널리 호환되는 jQuery 버전입니다.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
  • 만약 당신이 오래된 것을 신경쓰지 않는다면.IE, 이것은 더 작고 빠릅니다.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>

백업/폴백 계획!

  • 어느 쪽이든, Google CDN이 실패하거나(가능성이 거의 없음) 사용자가 이란 또는 때로는 중국과 같이 사이트에 액세스하는 위치에서 차단된 경우에 대비하여 로컬로 폴백을 사용해야 합니다.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>if (!window.jQuery) { document.write('<script src="/path/to/your/jquery"><\/script>'); }
</script>

참조: http://websitespeedoptimizations.com/ContentDeliveryNetworkPost.aspx

저는 그것이 문자열의 마지막 <에서 \x3C로 탈출해야 한다고 생각합니다.브라우저가 를 볼 때 이것을 스크립트 블록의 끝으로 간주합니다(HTML 파서는 JavaScript에 대해 전혀 모르기 때문에 문자열에 나타나는 것과 실제로 스크립트 요소를 끝내기 위한 것을 구별할 수 없습니다).따라서 HTML 페이지 안에 있는 JavaScript에 문자 그대로 나타나는 것은 (최상의 경우) 오류를 유발하고 (최악의 경우) 엄청난 보안 구멍이 될 것입니다.

<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js"></script>
<script>window.jQuery || document.write('<script src="js/jquery-2.0.0.min.js">\x3C/script>')</script>
if (typeof jQuery == 'undefined')) { ...

또는

if(!window.jQuery){

cdn 버전이 로드되지 않으면 작동하지 않습니다. 브라우저가 이 상태를 통해 실행되고 jQuery가 필요한 나머지 자바스크립트를 다운로드하는 동안 오류가 반환되기 때문입니다.해결책은 그 조건을 통해 스크립트를 로드하는 것이었습니다.

    <script src="http://WRONGPATH.code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script><!--  WRONGPATH for test-->
  <script type="text/javascript">
  function loadCDN_or_local(){
    if(!window.jQuery){//jQuery not loaded, take a local copy of jQuery and then my scripts
      var scripts=['local_copy_jquery.js','my_javascripts.js'];
      for(var i=0;i<scripts.length;i++){
      scri=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));
      scri.type='text/javascript';
      scri.src=scripts[i];
    }
  }
  else{// jQuery loaded can load my scripts
    var s=document.getElementsByTagName('head')[0].appendChild(document.createElement('script'));
    s.type='text/javascript';
    s.src='my_javascripts.js';
  }
  }
  window.onload=function(){loadCDN_or_local();};
  </script>

거의 모든 공용 CDN은 상당히 안정적입니다.그러나 차단된 Google 도메인이 걱정되는 경우 대체 jQuery CDN으로 폴백할 수 있습니다.그러나 이러한 경우에는 다른 CDN을 기본 옵션으로 사용하고 Google CDN으로 폴백하여 실패한 요청과 대기 시간을 방지하는 것이 좋습니다.

<script src="https://pagecdn.io/lib/jquery/3.2.1/jquery.min.js"></script>
<script>
   window.jQuery || document.write('<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"><\/script>');
</script>

ASP에서 레이저 구문 사용.NET, 이 코드는 폴백 지원을 제공하며 가상 루트와 함께 작동합니다.

@{var jQueryPath = Url.Content("~/Scripts/jquery-1.7.1.min.js");}
<script type="text/javascript">
    if (typeof jQuery == 'undefined')
        document.write(unescape("%3Cscript src='@jQueryPath' type='text/javascript'%3E%3C/script%3E"));
</script>

또는 도우미(도우미 개요)를 작성합니다.

@helper CdnScript(string script, string cdnPath, string test) {
    @Html.Raw("<script src=\"http://ajax.aspnetcdn.com/" + cdnPath + "/" + script + "\" type=\"text/javascript\"></script>" +
        "<script type=\"text/javascript\">" + test + " || document.write(unescape(\"%3Cscript src='" + Url.Content("~/Scripts/" + script) + "' type='text/javascript'%3E%3C/script%3E\"));</script>")
}

다음과 같이 사용합니다.

@CdnScript("jquery-1.7.1.min.js", "ajax/jQuery", "window.jQuery")
@CdnScript("jquery.validate.min.js", "ajax/jquery.validate/1.9", "jQuery.fn.validate")

비록 글을 쓰긴 하지만document.write("<script></script>")jQuery backoff가 더 쉬워 보입니다. Chrome은 그 경우에 유효성 검사 오류를 제공합니다.그래서 저는 "스크립트" 단어를 깨는 것을 선호합니다.그래서 위와 같이 더 안전해집니다.

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.11.1.min.js"></script>
<script>if (typeof jQuery === "undefined") {
   window.jqFallback = true;
   document.write("<scr"+"ipt src='http://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js'></scr"+"ipt>");
} </script>

장기적인 문제의 경우 JQuery 폴백을 기록하는 것이 좋습니다.위의 코드에서 첫 번째 CDN을 사용할 수 없는 경우 다른 CDN에서 JQuery가 로드됩니다. 그러나 잘못된 CDN을 알고 영구적으로 제거하기를 원할 수 있습니다.(이 경우는 매우 예외적인 경우입니다.)또한 예비 문제를 기록하는 것이 좋습니다.그래서 당신은 AJAX로 잘못된 케이스를 보낼 수 있습니다.JQuery가 정의되어 있지 않기 때문에 AJAX 요청에 바닐라 자바스크립트를 사용해야 합니다.

<script type="text/javascript">
    if (typeof jQuery === 'undefined' || window.jqFallback == true) {
        // XMLHttpRequest for IE7+, Firefox, Chrome, Opera, Safari
        // ActiveXObject for IE6, IE5
        var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
        var url = window.jqFallback == true ? "/yourUrl/" : "/yourUrl2/";
        xmlhttp.open("POST", url, true);
        xmlhttp.send();
    }
</script>

외부 데이터 저장소에서 사용자가 제어할 수 없는 리소스를 로드할 수 없습니다.누락된 기능을 찾는 것은 여기에 설명된 것처럼 시간 초과를 방지하기 위한 수단으로 완전히 잘못된 것입니다. http://www.tech-101.com/support/topic/4499-issues-using-a-cdn/

ajax.googleapis.com 를 cdnjs.cloudflare.com 으로 대체하는 또 다른 대체 제품:

(function (doc, $)
{
    'use strict';

    if (typeof $ === 'undefined')
    {
        var script = doc.querySelector('script[src*="jquery.min.js"]'),
            src = script.src.replace('ajax.googleapis.com', 'cdnjs.cloudflare.com');

        script.parentNode.removeChild(script);
        doc.write('<script src="' + src + '"></script>');
    }
})(document, window.jQuery || window.Zepto);
  • 문자열에 지정하여 jQuery 버전을 유지할 수 있습니다.
  • HTML 캡처와 함께 작동하지 않는 자산 관리에 적합
  • 현장에서 테스트 완료 - 중국 사용자에게 완벽한 작동

다음과 같은 코드를 사용할 수 있습니다.

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>window.jQuery || document.write('<script type="text/javascript" src="./scripts/jquery.min.js">\x3C/script>')</script>

또한 스크립트에 대해 몇 가지 가능한 예비를 설정하고 로드 프로세스를 최적화하는 데 사용할 수 있는 라이브러리도 있습니다.

  • 바구니.js
  • JS 필요
  • 예노우

예:

basket.js 지금으로서는 가장 좋은 변형이라고 생각합니다.스크립트를 로컬 저장소에 캐시하면 다음 로드 속도가 빨라집니다.가장 간단한 통화:

basket.require({ url: '/path/to/jquery.js' });

그러면 약속이 반환되고 오류 발생 시 다음 통화를 수행하거나 성공에 대한 종속성을 로드할 수 있습니다.

basket
    .require({ url: '/path/to/jquery.js' })
    .then(function () {
        // Success
    }, function (error) {
        // There was an error fetching the script
        // Try to load jquery from the next cdn
    });

JS 필요

requirejs.config({
    enforceDefine: true,
    paths: {
        jquery: [
            '//ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min',
            //If the CDN location fails, load from this location
            'js/jquery-2.0.0.min'
        ]
    }
});

//Later
require(['jquery'], function ($) {
});

예노우

yepnope([{
  load: 'http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js',
  complete: function () {
    if (!window.jQuery) {
      yepnope('js/jquery-2.0.0.min.js');
    }
  }
}]);

개인 복사본을 사용할 필요가 없습니다.여기 제 전체 벨트와 교정기 대본이 있습니다.

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8"/>
        <title>jQuery</title>
        <!-- EMBED JQUERY USING GOOGLE APIs -->
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>

        <!-- IF THAT FAILS EMBED JQUERY USING CLOUDFLARE CDN -->
        <script type="text/javascript">
            window.jQuery || document.write('<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"><\/script>');
        </script>

        <!-- IF THAT FAILS ************* HOW??? *********** EMBED JQUERY FROM MICROSOFT -->
        <script type="text/javascript">
            window.jQuery || document.write('<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.6.0.min.js"><\/script>');
        </script>

        <!-- IF THAT FAILS ************* WOW!!! *********** EMBED JQUERY FROM JQUERY.COM -->
        <script type="text/javascript">
            window.jQuery || document.write('<script src="https://code.jquery.com/jquery-3.6.0.min.js"><\/script>');
        </script>

        <!-- IF THAT FAILS ************* LET'S STOP!!! *********** EMBED JQUERY FROM PERSONAL COPY -->
        <script type="text/javascript">
            window.jQuery || document.write('<script src="jquery.min.js"><\/script>');
        </script>
    </head>
    <body>


    </body>
</html>

언급URL : https://stackoverflow.com/questions/1014203/best-way-to-use-googles-hosted-jquery-but-fall-back-to-my-hosted-library-on-go

반응형