将<script>标记的执行推迟到jQuery .load完成之后

时间:2018-08-09 08:33:38

标签: javascript php html

我正在尝试通过jQuery加载在页面上“包含”一些生成的HTML代码(将其注入#loadhead div):

  

<脚本延迟>
    ...其余代码

 

我希望仅在head.php完成加载后才加载脚本的第二部分。我试图用defer强制执行第二个脚本标签,但是它似乎无法正常工作-有时,head.php仍然无法在其余代码之前加载。我该怎么做才能确保始终完全加载?它会生成一些由“延迟”脚本使用的JavaScript值。

1 个答案:

答案 0 :(得分:2)

为您提供两个选择:

1。使用您从load的回调函数中调用的函数

将第二个脚本的代码放入一个函数中,以便它被加载而不是 run 加载,然后从load的成功回调中调用该函数。 / p>

示例:

<script>
$("#loadhead").load("head.php", otherStuff);
function otherStuff() {
    // ...
}
</script>

(我没有看到任何理由将它们放在单独的script标签中,所以没有。)

我可能会将所有内容都放在.js文件中并进行链接,而不是将脚本嵌入到HTML内联中。

2。完成load后加载脚本

根本不包含第二个script标签;稍后使用load或附加一个$.getScript元素,在script成功回调中加载脚本。

示例:

<script>
$("#loadhead").load("head.php", function() {
    $.getScript("otherstuff.js");
});
</script>

(我没有看到任何理由将它们放在单独的script标签中,所以没有。)


为了避免不必要的延迟,我非常愿意选择选项1。