有什么理由可以使用 document.write() 来包含 jquery cdn 吗?
Is there any reason one would use document.write() to include jquery cdn?
我正在为一个 open-source 项目开发一些可能的 add-on 模块,用 php 编写。我对在 html header 中找到的代码感到困惑,但我对使用 html 和 css 以外的任何东西都是相当陌生的。
<script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript type="text/javascript" src="//code.jquery.com/jquery-1.12.0.min.js"%3E%3C/script%3E'));</script>
<script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript type="text/javascript" src="<?php echo $template->get_template_dir('.js',DIR_WS_TEMPLATE, $current_page_base,'jscript'); ?>/jquery.min.js"%3E%3C/script%3E'));</script>
我发现他们为什么要添加两次的最接近的答案是,本地副本是在 CDN 过载的情况下的后备。
但即使在那种情况下,主要的顶部 link 不会是:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"> </script>
...然后如果要通过 document.write() 包含任何内容,那将是后备?
它还在开发者控制台中抛出错误警告。我在问是否有某种原因(我还不明白)按照他们的方式去做。如果我用直接 link 替换两行 document.write() 内容,我不会收到控制台警告,而且我的项目似乎加载得更快。
之所以使用document.write
来载入脚本标签是因为前面的window.jQuery ||
位。像这样使用 ||
运算符检查左边的表达式是否已定义——如果是,则什么都不做;如果不是,它运行右侧的表达式,创建脚本标签。这创建了加载 jQuery 只有当它还没有被加载到页面上的能力。
我正在为一个 open-source 项目开发一些可能的 add-on 模块,用 php 编写。我对在 html header 中找到的代码感到困惑,但我对使用 html 和 css 以外的任何东西都是相当陌生的。
<script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript type="text/javascript" src="//code.jquery.com/jquery-1.12.0.min.js"%3E%3C/script%3E'));</script>
<script type="text/javascript">window.jQuery || document.write(unescape('%3Cscript type="text/javascript" src="<?php echo $template->get_template_dir('.js',DIR_WS_TEMPLATE, $current_page_base,'jscript'); ?>/jquery.min.js"%3E%3C/script%3E'));</script>
我发现他们为什么要添加两次的最接近的答案是,本地副本是在 CDN 过载的情况下的后备。
但即使在那种情况下,主要的顶部 link 不会是:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"> </script>
...然后如果要通过 document.write() 包含任何内容,那将是后备?
它还在开发者控制台中抛出错误警告。我在问是否有某种原因(我还不明白)按照他们的方式去做。如果我用直接 link 替换两行 document.write() 内容,我不会收到控制台警告,而且我的项目似乎加载得更快。
之所以使用document.write
来载入脚本标签是因为前面的window.jQuery ||
位。像这样使用 ||
运算符检查左边的表达式是否已定义——如果是,则什么都不做;如果不是,它运行右侧的表达式,创建脚本标签。这创建了加载 jQuery 只有当它还没有被加载到页面上的能力。