我有以下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(){...});
答案 0 :(得分:1)
这可能与您在脚本中设置事件处理程序的方式有关。你只能有一个事件处理器,用于&#39; window.onload&#34;事件,你的表现方式。因此,在加载脚本时,不会调用同一事件的所有其他事件处理程序。 尝试使用类似的东西:
window.addEventListener("onload", function(){
console.log('I am loaded');
});
使用上面的内容,您可以让多个事件处理程序监听同一事件,在本例中是onload事件。 我希望这会有所帮助。