当前位置: 首页 > 面试题库 >

在CDN被阻止/不可用的情况下,如何加载本地脚本文件作为后备?[重复]

计均
2023-03-14
问题内容

我将CDN用于以下javascript:

  • https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js
  • https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js
  • http://ajax.aspnetcdn.com/ajax/mvc/3.0/html" target="_blank">jquery.validate.unobtrusive.min.js
  • http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.min.js

对于每个副本,在可能被阻止/不可用的情况下,如何恢复使用本地副本?


问题答案:

要确认是否加载了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>

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

您可以使用此方法构建自己的解决方案。例如,jQuery工具提示插件会创建$.tooltip()函数,因此我们可以使用以下代码进行检查:

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


 类似资料:
  • 我正在使用Java8 Nashorn来执行一个特定的先前同意的方法。我可以毫无问题地调用特定的方法。不过困扰我的一件事是,当我加载脚本时,它也会执行它。 例如,如果file.js包含一个print("hello world!")scriptEngine.eval(new FileReader("./file.js")将执行并打印hello world。我必须先这样做,然后才能调用我想要的特定方法。

  • 是否有任何方法可以将外部脚本包含(或加载)到脚本引擎,以便外部脚本中定义的所有函数都可以在方法中使用? 在我们的应用程序中,我们根据用户输入执行一些java脚本代码。当用户请求时,应用程序会创建一个ScriptEngine实例并根据输入参数执行适当的javascript代码。 这里的问题是javascript中有一些重复的功能。考虑一个例子: 场景1:当用户输入为十进制纬度和经度时,计算距离 -

  • 拉斯宾(杰西)-root@RaspberryPi-腻子 在我输入的终端中 现在我得到了一个包含此代码的脚本 有一个cronjob每小时启动一次这个脚本 苏。一定有什么地方出错了。因为他将变量$finalanswer解读为nothing。 这意味着在此脚本之外定义的变量将不起作用? 我该如何解决这个问题?

  • 问题内容: 我需要编写一个使用HTML5和canvas的软件。 整个软件应该能够在本地运行,而不需要服务器。所以我只能使用Javascript,不能使用php。 困难的部分:我必须动态获取操作期间所需的文本文件的内容。 例如:当软件启动时,我需要“ config.json”。在用户做出一些选择之后,我需要“ story1.txt”或“ story2.txt”,依此类推。 我的问题: 我不能使用Aj

  • ; 该脚本使用 HM VNISEdit 脚本编辑器向导产生 ; 安装程序初始定义常量 !define PRODUCT_NAME "下载专用程序" !define PRODUCT_VERSION "1.0" SetCompressor lzma ; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------ !include "MUI.nsh" ; MUI 预定义常量 !d

  • 我们的Jenkins服务器有一个已经运行了三天的作业,但是没有做任何事情。单击角落里的小X没有任何作用,控制台输出日志也没有显示任何内容。我已经检查了我们的构建服务器,这个工作实际上似乎根本没有运行。 有没有办法通过编辑一些文件或锁之类的东西来告诉詹金斯这项工作已经“完成”了?因为我们有很多工作,所以我们不想重新启动服务器。