JavaScript顶部或底部 - 位置敏感?

时间:2014-11-30 12:17:13

标签: javascript

为什么链接的JavaScript文件有时不起作用,当它包含在页面顶部而不是底部时?

<script type="text/javascript" src"..."></script>

3 个答案:

答案 0 :(得分:3)

例如,如果您想操纵DOM项目,而这些项目尚未存在,那么它将无法工作。如果头文件中包含JavaScript文件,则主体尚未存在,但如果您将其包含在正文的末尾,则这些项目有效。

如果您不想依赖此行为,则可以在文档准备好时(即已加载整个DOM时)定义一个运行的回调。

这就是例如jQuery实现$(document).ready(function() {})或更快$(function () {});。在vanilla JavaScript中(使用现代浏览器,IE9 +),可以使用

实现
document.addEventListener("DOMContentLoaded", function() {
    // code...
});

答案 1 :(得分:1)

了解它为什么不起作用的最好方法是检查JS错误。尝试找出当脚本被包含在顶部时你会得到什么错误。正如在其他响应中所提到的,它可能是因为DOM项目。您可以通过添加&#34;延迟&#34;来解决此问题。标记到脚本。

也可能是因为在运行此脚本时,您希望存在一些JS对象。例如,如果您的脚本标记正在提供JSONP请求,那么您必须具有处理数据的函数。否则你会得到一个&#34;未定义的函数&#34;脚本运行时出错。

答案 2 :(得分:1)

JS代码从上到下按指令执行。

调用函数的代码需要在函数定义下

此代码有效:

  var func = function()
  {
    alert('it works');
  };

  func();

虽然这不是:

  func();

  var func = function()
  {
    alert('it works');
  };

它会抛出一个未定义的错误。原因是JS编译器在尝试调用它时不知道func定义。

HTML页面中包含的JS文件也是如此。只要上面的部分没有依赖关系,或者如果他们在页面加载之前没有尝试操作HTML代码,您可以将它们包含在底部。