当 CDN JS Cloudflare 不可用时,Lightbox2 回退
lightbox2 fallback when cdn js cloudflare is unavailable
我正在通过以下 CDN //cdnjs.cloudflare.com/ajax/libs/lightbox2/2.7.1/js/lightbox.min.js
加载灯箱2
如果这不可用,那么我想回退到我的核心文件。如何检查是否已定义灯箱以避免加载我的核心文件。
我尝试了typeof lightbox === "undefined"
但这总是返回 true,强制加载我的核心文件。
我已经有 jquery、angular 等的回退 - 它是 lightbox2,我在检查它是否已加载时遇到问题。
是的,这里的问题是全局范围内没有任何内容,因为灯箱不会向其添加任何内容。(请参阅此SO问题(。这就是为什么你不能像window.lightbox
一样测试它.
解决方法是使用 ajax 请求加载脚本,如下面的演示所示。getScript
方法是一个简写的 Ajax 函数(有关详细信息,请参阅此处(。
在那里,您有一个失败回调,如果 cdn 加载失败,您可以在其中将本地脚本添加到 DOM。
您可以对从 cdn 加载的任何文件(例如灯箱的样式表(执行相同的操作。
var addLocalScript = function (src) {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = src; // use this for linked script
//script.text = "alert('voila!');" // use this for inline script
document.body.appendChild(script);
};
$(function () {
var url = 'https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.7.1/js/lightbox.min.js';
$.getScript(url)
.done(function (script, textStatus) {
console.log(textStatus);
})
.fail(function (jqxhr, settings, exception) {
console.log('cdn load failed');
//add local script
addLocalScript('js/lightbox/lightbox.min.js');
});
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.7.1/css/lightbox.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://lorempixel.com/400/200" data-lightbox="image-1" data-title="My caption"><img src="http://lorempixel.com/400/200"/></a>
相关文章:
- 什么是HTML5画布标记的回退
- 如何在XHTML中添加jQuery CDN回退
- 当CDN加载失败时,为字体添加一个本地CSS回退
- HTML5 视频的回退图像
- 同时使用回退和 JavaScript.什么是正确的方法
- Javascript “替换”替换回退
- jQuery CDN超时回退
- 悬停状态指针事件:无Javascript回退
- IE8 内联尝试的 SVG 回退
- 设置计时器以等待为flash回退视频播放器加载swfobject脚本
- 如何为未加载、加载时间过长和被阻止的css文件编写回退
- HTML5视频回退/备份图像不合适..
- IE8 和控制台.log - 如果开发人员控制台未打开,则回退到存根
- 咕噜咕噜浏览器化 - 设置包含,回退路径
- Javascript动画回退
- 显示不受支持的文件格式的<视频>回退消息
- AngularJS 注入回退
- 检测并附加jQuery,如果没有加载纯Javascript和回退
- 当 CSS 来自云或 CDN 时,如何设置 CSS 的回退 URL
- 当 CDN JS Cloudflare 不可用时,Lightbox2 回退