<head> 中的 Javascript 在 <body> 中的脚本之前执行

标签 javascript

我正在尝试编写一些 JavaScript,但在这方面几乎没有经验。

我读过一些帖子,建议 内的 <script> block 保证在 内的 block 之前运行,但我看到的行为恰恰相反。有人可以向我解释为什么我会看到这个吗?

这是我的简单测试页面:

<html>
  <head>
    <script type="text/javascript">
    var test_msg;
    function initMap() {
      test_msg = "This is a test";
      window.alert('initMap: ' + test_msg);
    }
    </script>
  </head>
  <body onload="initMap()">
    <script type="text/javascript">
      window.alert('blargo: ' + test_msg);
    </script>
  </body>
</html>

当我加载这个(在 Firefox 或 IE 中)时,我看到 2 个消息框:#1:“blargo:未定义”和#2:“initMap:这是一个测试”,表明后面的脚本首先被执行.

感谢您的帮助,
GS。

最佳答案

您的第一个脚本首先被执行...但它所做的只是创建函数和变量。

然后您将在此处调用该函数:

<body onload="initMap()">

...这确保在加载所有文档资源之前不会调用该函数。

<小时/>

所以代码执行的总体顺序是:

   // first script
var test_msg;
function initMap() {
   test_msg = "This is a test";
   window.alert('initMap: ' + test_msg);
}


   // second script
window.alert('blargo: ' + test_msg);


   // function call via window.onload
initMap();

关于<head> 中的 Javascript 在 <body> 中的脚本之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15301376/

相关文章:

javascript - 不推荐使用removeChild、textContent 和appendChild。备择方案?

javascript - jsPDF调整文本行间距

php - 打开 PHP 页面的弹出窗口

javascript - 如何仅在桌面浏览器上时聚焦输入字段

javascript - 使用 Express 故意发送无效的 HTTP 响应

javascript - 悬停时触发 Canvas 动画

javascript - Select 在初始更改时返回错误值

javascript - 如何将最长元素的宽度分配给其他元素

javascript - 重新连接时 Firebase JavaScript API 是否 catch 服务器

javascript - 为什么 .test() 的结果会改变?