我从其他网站引用对象(图像,脚本,iframe等)。有时,另一个站点已关闭,我必须等待大约30秒才能让我的浏览器“跳过”该对象。如何在例如5秒后“跳过”对象?
以下是一些示例代码:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>
答案 0 :(得分:2)
结帐yepnope。这是一个直接来自其主页的片段:
yepnope.js有能力进行资源回退并仍然下载 依赖脚本与第一个脚本并行。更清楚:
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'); } } }, { load: 'jquery.plugin.js', complete: function () { jQuery(function () { jQuery('div').plugin(); }); } }]);
我建议在决定是否推出自己的脚本之前调查yepnope和其他现有的脚本加载器。这些加载器非常小(yepnope声称是1.6 kB),因此编写自己的解决方案并没有多大好处。
答案 1 :(得分:1)
HTML5具有async
元素的script
属性,可通过允许脚本异步加载来抵消此困难。某些浏览器还实现了类似的but not exactly the same非标准defer
属性。至于除scripts
之外的资源,例如图像,您实际上可以使用JavaScript来异步加载它们(例如,通过动态创建图像元素)。这种方法的缺点是,如果您的异步JavaScript随后导致异步图像加载,那么您将面临FOUC的极高风险。