【问题标题】:Prevent inline scripts loading until Jquery has been loaded在加载 Jquery 之前阻止加载内联脚本
【发布时间】:2014-02-26 01:35:58
【问题描述】:

好的,我有一个Jquery脚本,它的功能是确定窗口的宽度,onload。如果宽度大于 642px,它会调用 .load() 来加载图像滑块。原因是移动设备不会提供滑块所需的图像或 js。

当 jquery 加载到头部时,这工作正常。移动到页脚时,它会中断。该代码包含在 index.php 中。这可能是造成它的原因吗?我会想到一旦 php 构建了页面 jquery 解析了内容?

似乎代码在加载 jquery 之前已被解析。任何人都可以建议一种方法来解决这个问题吗?

我曾想过将代码创建为纯 JS 或使用延迟加载,但我似乎无法弄清楚如何让它工作。

一定有更好的解决方案吗?我觉得我错过了一些非常明显的东西..

包含脚本的内容:

<script type="text/javascript">

$(window).bind("load", function() {
   // code here

    $(window).width();   // returns width of browser viewport

    var width = $(window).width(); 

    if (width >= 642)  {
        $('.slider-content').load("templates/include/slider.php", function () {
            $('.slider-content').show(200);
        });
    }

    else {
        //alert('small')
    }
}); 
</script>

谢谢, 亚当

【问题讨论】:

  • JavaScript 代码在遇到时加载,并被视为阻塞。必须首先加载任何依赖项。必须先加载 jQuery,然后才能对 jQuery 进行任何引用。
  • 这就是我认为的 Bic,但是必须有一种方法可以在加载后插入代码...感谢 Fabrizio 我之前阅读的链接。很快就会试一试,看起来它应该可以解决我的问题。有没有更清洁的方法来做到这一点?
  • 一个更干净的方法当然应该是避免在页面的头部或中间使用jQuery sn-ps,并清楚地分离您的代码。这需要在包含 jQuery 之后将所有脚本放在底部
  • 您正在使用 jQuery 绑定 onload 事件。您可以尝试使用 vanilla JS 绑定事件:window.onload(function () { ... }

标签: javascript jquery


【解决方案1】:

在某些环境中,您必须使用jQuery() 而不是$()See this question.

除此之外,您的问题可能与文档尚未完成或绑定到已通过的事件有关。试试这个:

jQuery(document).ready( function($) {
    // Your code goes here. (You can safely use the $() function inside here.)
});

【讨论】:

  • 这与 OP 问题有什么关系?
  • 他说这是“破坏”。在没有更具体的情况下,我认为这意味着“ReferenceError: $ is not defined”。
  • 如果$ 未定义(并且我们假设没有加载其他库),即使jQuery 也将未定义,因为window.$ 只是jQuery() 的别名
  • 某些平台,例如 WordPress,以“noConflict 模式”加载 jQuery,这意味着 $ 别名不可用。 WordPress Codex: jQuery noConflict Wrappers
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多