【问题标题】:Jquery functions (file loading) in orderJquery函数(文件加载)按顺序
【发布时间】:2021-06-28 11:12:30
【问题描述】:

我正在使用下面的代码按顺序加载文件并在页面加载时加载。但我得到了

$ 不是函数

最后一个文件“scripts.js”的错误。换句话说,jquery 和 bootstrap 文件总是正确加载,但最后一个文件(我的自定义脚本)显示错误并且没有任何自定义工作。我在做什么?感谢您的帮助:)

<script type="text/javascript">
function chamajquery() {
    var element = document.createElement("script");
    element.src = "<?php echo esc_url(get_template_directory_uri()); ?>/assets/js/jquery-3.6.0.min.js";
    document.body.appendChild(element);
    chamabootstrap();
}
function chamabootstrap() {
    var element2 = document.createElement("script");
    element2.src = "<?php echo esc_url(get_template_directory_uri()); ?>/assets/js/bootstrap.bundle.min.js";
    document.body.appendChild(element2);
    chamascriptsmanuais();
}
function chamascriptsmanuais() {
    var element3 = document.createElement("script");
    element3.src = "<?php echo esc_url(get_template_directory_uri()); ?>/assets/js/scripts.js";
    document.body.appendChild(element3);
}
window.addEventListener("load", chamajquery);

【问题讨论】:

  • 在追加后立即使用先前的脚本还为时过早。它仍然需要加载异步。在脚本元素上使用加载事件
  • @charlietfl 你能举个例子吗?
  • 顺便说一句,您为什么需要同时使用 Javascript 和PHP 来附加 脚本?这对我来说似乎有点“过度设计”。
  • PHP 获取子主题的 URL (Wordpress)。剩下的就是 JS。我不认为这是最好的解决方案,但它可以工作并提高页面速度洞察点(我客户的主要目标)。

标签: jquery load script


【解决方案1】:
  1. 我希望脚本被附加到头部而不是正文
  2. 您的问题可能是时间问题
  3. 为什么要使用这种复杂的方式?如果你想让页面加载更快,只需在 &lt;/body&gt; 标签之前添加所有 3 个脚本

<script src="<?php echo esc_url(get_template_directory_uri()); ?>/assets/js/jquery-3.6.0.min.js"></script>
<script src="<?php echo esc_url(get_template_directory_uri()); ?>/assets/js/bootstrap.bundle.min.js"></script>
<script src="<?php echo esc_url(get_template_directory_uri()); ?>/assets/js/scripts.js"></script>
</body>

使用onload的替代方案(可以改为addEventListener)

<script type="text/javascript">
function chamajquery() {
    const element1 = document.createElement("script");
    element1.onload=chamabootstrap;
    element1.src1 = "<?php echo esc_url(get_template_directory_uri()); ?>/assets/js/jquery-3.6.0.min.js";
    document.querySelector("head").appendChild(element1);
}
function chamabootstrap() {
    const element2 = document.createElement("script");
    element2.onload=chamascriptsmanuais;
    element2.src = "<?php echo esc_url(get_template_directory_uri()); ?>/assets/js/bootstrap.bundle.min.js";
    document.querySelector("head").appendChild(element2);
}
function chamascriptsmanuais() {
    const element3 = document.createElement("script");
    element3.src = "<?php echo esc_url(get_template_directory_uri()); ?>/assets/js/scripts.js";
    document.querySelector("head").appendChild(element3);
}
window.addEventListener("load", chamajquery);

【讨论】:

  • 感谢您的回答。由于谷歌页面速度洞察及其 onload/defer 指令,我正在使用这些函数来加载脚本。我需要为我的客户获得尽可能高的分数。如果我按照你的建议做,分数会降低 10 分左右:/
猜你喜欢
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 2016-09-27
相关资源
最近更新 更多