Dmi*_*eev 230

要确认加载了cdn脚本,您可以检查是否存在此脚本定义的任何变量/函数,如果它未定义 - 则cdn失败并且您需要加载本地脚本副本.

基于这个原则是基于这样的解决方案:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>
Run Code Online (Sandbox Code Playgroud)

(如果没有window.jQuery属性定义的cdn脚本没有加载).

您可以使用此方法构建自己的解决方案.例如,jquery工具提示插件创建$.tooltip()函数,所以我们可以用这样的代码检查它:

<script>
    if (typeof $.tooltip === 'undefined') {
        document.write('<script src="js/libs/jquery.tooltip.min.js">\x3C/script>');
    }
</script>
Run Code Online (Sandbox Code Playgroud)

  • 对于任何想知道为什么作者使用```\ x3c```的人来说,这是因为否则```</ script>```会过早地结束脚本. (58认同)
  • `<\/script>`也可以正常工作. (23认同)
  • 不推荐使用`document.write`。`document.write` 脚本的网络请求可能会被浏览器阻止:https://developers.google.com/web/updates/2016/08/removing-document-write &amp; https://www.chromestatus。 com/feature/5718547946799104 (5认同)
  • 为什么不`if($ .tooltip === undefined)`? (2认同)
  • 它也有效,有很多方法可以检查存在.我喜欢`typeof`检查他们[防弹](http://stackoverflow.com/questions/5257923/how-to-load-local-script-files-as-fallback-in-cases-where-cdn-are-阻塞的unavai/5531821) (2认同)

Eiv*_*ind 16

我会查看像yepnopejs这样的插件

yepnope([{
  load: 'http:/­/ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',
  complete: function () {
    if (!window.jQuery) {
      yepnope('local/jquery.min.js');
    }
  }
}]);
Run Code Online (Sandbox Code Playgroud)

获取要检查的对象数组,检查站点上的文档

  • 2015年注释:yepnope已被弃用:( (3认同)

EMM*_*ICH 6

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>
Run Code Online (Sandbox Code Playgroud)

取自HTML5 Boilerplate.


Max*_*xim 5

我使用http://fallback.io/

  fallback.load({
        // Include your stylesheets, this can be an array of stylesheets or a string!
        page_css: 'index.css',

        // JavaScript library. THE KEY MUST BE THE LIBARIES WINDOW VARIABLE!
        JSON: '//cdnjs.cloudflare.com/ajax/libs/json2/20121008/json2.min.js',

        // Here goes a failover example. The first will fail, therefore Fallback JS will load the second!
        jQuery: [
            '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.FAIL_ON_PURPOSE.min.js',
            '//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js',
            '//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.min.js'
        ],   .......
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

86330 次

最近记录:

11 年,8 月 前