【问题标题】:Can I put a script at the bottom of a web page, but call it from the top?我可以将脚本放在网页底部,但从顶部调用它吗?
【发布时间】:2010-11-25 12:38:38
【问题描述】:

这是否会导致潜在问题:

... ... 函数 myFunction() { ... } 脚本> 正文>

如果页面加载缓慢并且表单在底部的脚本部分加载之前呈现,会发生什么?如果用户在 INPUT 框中输入一些文本,会出现 JavaScript 错误吗?

【问题讨论】:

  • 很简单 - 是的。你为什么要这样做呢?
  • @Andrzej:许多 JavaScript 性能指南建议尽可能在页面底部加载脚本(例如 Yahoo performance rules),因此这样做有很多动机。
  • 只看这个小sn-p的代码,她的问题比在正文末尾加载脚本要多。

标签: javascript html javascript-events


【解决方案1】:

您需要先加载脚本,然后才能调用它。你为什么不把它改成这样:

<input name="xyz" id="myInput">
      ...
     <script>
        function myFunction
        {
          ...
        }

        window.onload = function() {
            var myInput = document.getElementById('myInput');
            myInput.onchange = myFunction;
        }
      </script>

这种方法允许您将标记和脚本分开,并将所有 js 放在一个地方。

【讨论】:

    【解决方案2】:

    JavaScript 开发多年来发生了变化。

    不仅您的原始问题正在辩论,而且要回到您最初问题的主题,您的方法本身也是如此。

    我强烈推荐阅读这篇关于 JavaScript 最佳实践的简短文章: http://www.catswhocode.com/blog/best-practices-for-modern-javascript-development.

    【讨论】:

      【解决方案3】:

      它可以工作,但如果您加载更多 HTML 并且浏览器最终解析 JavaScript 需要更长的时间,这可能会出现问题。在这种情况下,你的函数将不会被定义,你会得到......

      myFunction() 未定义

      请注意,您需要在myFunction 之后添加左括号和右括号(())。

      虽然函数声明被提升,但它们仅在其包含的脚本块中被提升。

      另外,你真的应该使用小写标签,现在已经不是 1998 年了 :) 而且 doctype 也有帮助,最后,你应该尝试从内联属性中删除你的事件处理程序。

      【讨论】:

        【解决方案4】:

        脚本在执行之前需要在 DOM 中定义。如果脚本位于底部,则需要在使用前加载。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-03-30
          • 2022-08-18
          • 2018-07-29
          • 1970-01-01
          • 2017-02-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多