如何在XHTML中添加jQuery CDN回退
How to add jQuery CDN fallback in XHTML?
最好加载CDN托管的jQuery,但回退到本地文件。例如HTML5 Boilerplate是这样做的:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.0.min.js"><'/script>')</script>
但是如何在XHTML中实现同样的功能呢?由于document.write()
不能在正确的XHTML中工作(作为application/xhtml+xml
发送),有其他选择吗?
此代码创建一个新的<script/>
元素,并将其附加在页面上的第一个<script/>
元素之前:
if (!window.jQuery) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'js/vendor/jquery-1.8.0.min.js';
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(script, firstScript);
}
createElement
、setAttribute
、appendChild
在更换document.write
或innerHTML
时按惯例
根据Maxim Vi.的回复,我将其插入到称为的位置,使其更接近最初的想法
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript" id="jQuery">
if (!window.jQuery) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '/js/jquery-1.8.0.min.js';
var jQueryScript = document.getElementById('jQuery');
jQueryScript.parentNode.insertBefore(script, jQueryScript);
}
</script>
通过这种方式,您可以将脚本保留在页脚中(如果页面中有其他脚本,则不会过早或在不同位置插入)。
编辑:我在一些浏览器中使用该解决方案时遇到了问题,但将id="jQuery"
进一步下移解决了问题。我相应地调整了代码。
相关文章:
- 如何在XHTML中添加jQuery CDN回退
- jQuery CDN超时回退
- 在像jQuery这样的CDN托管脚本上防止XSS
- 如何从CDN搜索请求JQuery
- 如何在单个页面中使用 Ajax 库 jquery 和 jQuery CDN
- 来自谷歌CDN的jQuery不起作用
- jQuery CDN 安全/不安全加载问题
- 我可以从谷歌CDN在FoundationZurb框架中加载jQuery吗
- 使用CDN的Require.js构建(r.js)jQuery不是't链接到良好的jQuery路径
- RequireJS没有'我使用CDN托管库(jQuery)进行多页项目
- Don't使用谷歌托管的CDN jQuery for Shopify-what'这是另一种选择
- jQuery函数没有'在CDN脚本标记中未按预期运行
- Browserify jQuery UI from CDN
- 后退jquery CDN不工作
- Sourcing jQuery from a CDN?
- 检测是否JQuery CDN down并处理它
- 是否有任何数据的优势加载jQuery从CDN (HTML5BP) vs连接和缩小它与其他脚本
- 不能动态加载jquery, bootstrap, D3.js, knockout.js的CDN
- 谷歌jQuery从CDN与SSL -问题与iPad
- 在HTTPS安全页面上引用jQuery CDN