我正在尝试编写一些脚本后备代码,以便如果CDN中不提供jQuery和jQuery Validator时,我将加载本地版本。请注意,以下脚本位于单独的文件中,以支持内容安全策略(CSP)。
(window.jQuery || document.write('<script src="/js/jquery.js"><\/script>'));
($.validator || document.write('<script src="/js/jquery-validate.js"><\/script>'));
如果jQuery不可用,则会在文档末尾写入一个新的脚本标记,但下一行错误将指出$未定义。在执行下一行之前,如何等待文档写入完成加载文档?
您应该利用的onload
事件<script>
。代替ducoment.write
,通过DOM操作将脚本标签添加到文档中:
var s = document.createElement('script');
s.onload = function() {
// jQuery is now loaded and can be used
}
s.src = '/js/jquery.js';
document.getElementsByTagName('head')[0].appendChild(s);
更新:
您的问题“如何等待document.write”的答案是您不必这样做,因为它document.write
是同步的。之后的下一行document.write
仅在write方法完成写入后才执行。但是,如果您将<script>
带有src
属性的标签写入文档,则资源(src指向)的加载将是异步的,并且将在与下一条语句并写后完成后开始。因为无法预先告知资源加载将花费多长时间,所以确保外部脚本中所有可用的唯一可行方法是onload
事件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句