2016-11-14 101 views
0

我有3個加載JS文件下面的HTML頭:search.js,create.js和maps.js:只有一個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腳本

(通過登錄每個文件「腳本X加載」測試)。執行的腳本始終是加載到頭部的最後一個腳本。 (即如果<script src="/search.js"></script>是最後一個,那麼控制檯將僅記錄'script search.js loaded')。執行的腳本始終按預期工作。其他腳本都在js控制檯中加載,但它們不會執行。對這裏有什麼問題有任何想法?

編輯:所有三個腳本看起來像

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

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

固定:用$(document).ready(function(){...});

+3

我懷疑問題是與腳本的內容 – Quentin

+1

使用瀏覽器開發工具的網絡標籤,你能否確認腳本的內容是正確的 –

+0

是的,它似乎沒有緩存相關。小組有預期的內容。 – user3549700

回答

0

更換window.onload = (function(){...});它可能與你如何設置你的事件處理程序腳本。您只能爲您的「window.onload」事件提供一個事件處理程序,因此,當加載腳本時,將不會調用同一事件的所有其他事件處理程序。 請嘗試使用類似於:

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

使用上面,你可以有多個事件處理程序監聽相同的事件,在這種情況下是onload事件。 我希望這有助於。

+0

你不是指[addEventListener](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener)? – feihcsim

+0

確實,感謝您的糾正。我一定是睡着了。 – Sean12

相關問題