页面加载时只执行一个JS脚本

时间:2016-11-14 23:02:58

标签: javascript html node.js express

我有以下html头加载3个JS文件:search.js,create.js和maps.js:

<head>
    <title>Simple Map</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <link rel="stylesheet" type="text/css" href="/maps.css" />
      <script
              src="https://code.jquery.com/jquery-3.1.1.min.js"
              integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8="
              crossorigin="anonymous"></script>
    <script src="https://maps.googleapis.com/maps/api/js?key=<my-key>=initMap"
    async defer></script>
      <script src="/search.js"></script>
      <script src="/create.js"></script>
      <script src="/maps.js"></script>

  </head>

我还有以下服务器端代码:

var express = 
require('express');
var path = require('path');
var app = express();
app.use('/', express.static(path.join(__dirname, 'static')))

app.get('/', function(req, res) {
  res.sendFile(__dirname+'/index.html');
});

app.listen(3000, function () {
    console.log('meetup listening on port 3000!')
})

当index.html加载时,客户端似乎只执行一个JS脚本(通过记录&#39;脚本x加载&#39;在每个文件中测试)。执行的脚本始终是头部加载的最后一个脚本。 (即如果<script src="/search.js"></script>是最后一个,则控制台将仅记录脚本search.js加载&#39;)。执行的脚本始终按预期工作。其他脚本都在js控制台中加载,但它们不会执行。关于这里有什么问题的任何想法?

编辑:所有三个脚本看起来都像

window.onload = (function(){
    console.log('search.js loaded');

/*
*event handling and DOM manipulation logic here
*/
});

已修复:将window.onload = (function(){...});替换为$(document).ready(function(){...});

1 个答案:

答案 0 :(得分:1)

这可能与您在脚本中设置事件处理程序的方式有关。你只能有一个事件处理器,用于&#39; window.onload&#34;事件,你的表现方式。因此,在加载脚本时,不会调用同一事件的所有其他事件处理程序。 尝试使用类似的东西:

window.addEventListener("onload", function(){
  console.log('I am loaded');
});

使用上面的内容,您可以让多个事件处理程序监听同一事件,在本例中是onload事件。 我希望这会有所帮助。