2016-11-18 45 views
-1

所以我一直在做socket.IO,並開始聊天的例子。我的聊天服務現在非常精細,但它基於原始教程。在教程中他們把把Socket.IO放在html頭標記

<script src="/socket.io/socket.io.js"></script> 
<script src="/script.js"></script> 

在身體標記的末尾。由於組織方面的原因,我想將腳本標籤放在首位,但是當我這樣做時,我的代碼不再有效。我很好奇爲什麼發生這種情況,即使沒有可能的解決方案。

+0

我的項目,把它放在頭上工作正常。該問題必須是特定於您的代碼的內容。 – Quentin

+0

你有沒有在你的頭上添加這個 - '' – Jackthomson

+0

你應該記住,他們把代碼放在底部,所以內容在腳本之前加載。如果你首先加載你的腳本,你必須(通常)等到你的頁面加載之後再做任何邏輯,使用類似window.onload –

回答

0

您可以將<script>標籤放置在您HTML中的任何地方(合理範圍內)。將<script>標籤放入<head>的唯一問題是,它們將首先加載。 HTML的工作方式是按順序遍歷代碼,這意味着如果您嘗試從JavaScript中引用代碼中的某些代碼並且JavaScript先出現,那麼您會收到錯誤消息,指出它無法找到您的元素引用。

爲了避免這種情況,JS常常放在最後。如果由於某種原因,您需要在<head>中的JS,您有兩種選擇:

  • 將您的代碼置於按鈕內。這是有效的,因爲文檔將加載所有內容,然後只運行按鈕被按下時引用HTML的JavaScript。
  • 如果您不希望用戶不得不按下按鈕,或者某個按鈕由於其他原因而不起作用,您可以使用內置函數,如<body onload="script();">。只有在主體加載後,此示例纔會運行script()中的代碼。如果這不起作用,你可以使用其他類似的funcions像document.onload = function ...或jQuery的$(document).ready()

希望這有助於!