【问题标题】:Why do I link my jquery inside a document.write?为什么我要在 document.write 中链接我的 jquery?
【发布时间】:2015-05-17 12:53:44
【问题描述】:

这段代码的目的是什么:

<script>window.jQuery || document.write('<script src="jquery-1.11.3.min.js"><\/script>')</script>

相对于:

<script src="jquery-1.11.3.min.js"></script>

..将 jquery 链接到我的 html 文件时。

这可能是一个愚蠢的问题。我是网络开发的新手。当我使用第一个代码时,我的 jquery 将不起作用。当我将它缩减为第二个代码时,它会加载但它会出现故障。我在&lt;/body&gt; 之前有这段代码。任何帮助是极大的赞赏。

【问题讨论】:

  • 第二个版本适用于大多数“普通”网页。你是什​​么意思“故障”?请更具体。你提到在&lt;/body&gt; 之前有代码,但是你的代码在哪里实际使用jQuery?
  • 我正在使用 aptana 3。当我预览时,页面不会停止加载,但我编写的 jquery 函数可以工作。它也使 aptana 运行速度变慢。我有在链接到我的 jquery 文件的代码上方加载 jquery 的代码。我相信这是正确的顺序。

标签: javascript jquery


【解决方案1】:

这行代码通常在你从 CDN 加载 jquery 时使用,比如

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>

<script>window.jQuery || document.write('<script src="jquery-1.11.3.min.js"><\/script>')</script>

第二个脚本标签将检查是否定义了 window.jQuery(这意味着脚本已成功从 CDN 加载)。如果不加载本地存储的版本。

【讨论】:

  • 太好了,我正在从 CDN 加载 jquery。你能告诉我为什么当我在我的问题中使用第一个示例时我的 jquery 不起作用,以及为什么当我使用我的问题中的第二个示例时它起作用?我已经尝试了好几个小时了。
【解决方案2】:

第一个代码片段的目的是检查 jQuery 是否已经加载。就是这样

window.jQuery || ....

在说。 window.jQuery 要么存在 要么 做其他事情。

如果window.jQuery 是undefined,它将

document.write('<script src="jquery-1.11.3.min.js"><\/script>')

加载 jQuery。

当您动态加载 HTML 内容并且您并不总是需要 jQuery 时,这会很有用。如果事件的顺序没有明确规定您何时需要 jQuery,您可以在需要时显式加载它。

【讨论】:

  • 太好了,这很有意义。因此,如果代码调用 jquery,则 document.write 代码将添加所需的脚本行。我理解正确吗?
  • @JasonCarrick 不是。该行不会检查您的脚本对 jQuery 的依赖,如果尚未定义,它只会添加它。
【解决方案3】:

传统上,Javascript 事件是使用页面标签中的“onload”属性附加到文档的。忘记这种做法。把它从你的脑海中抹去。 jQuery 为我们提供了一个关于文档对象的特殊实用程序,称为“就绪”,允许我们仅在 DOM 完全加载完成后执行代码。这是不显眼的 DOM 脚本的关键,因为它允许我们将 Javascript 代码与标记完全分离。使用 $(document).ready(),我们可以将一系列事件排队并在 DOM 初始化后让它们执行。 这意味着我们可以为我们的页面创建完整的效果,而无需更改相关元素的标记。

【讨论】:

    猜你喜欢
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2011-10-20
    • 2012-07-10
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多