2016-11-18 3 views
-1

그래서 socket.IO를하고 있으며 채팅 예제로 시작했습니다. 내 채팅 서비스는 현재 매우 정교하지만 원래 튜토리얼을 기반으로합니다. 튜토리얼에서 그들은 body 태그의 끝에html 헤드 태그에 Socket.IO 넣기

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

을 넣습니다. 조직상의 이유 때문에 스크립트 태그를 머리에 넣고 싶습니다. 그러나 그렇게하면 코드가 더 이상 작동하지 않습니다. 가능한 해결책이 없더라도 왜 이런 일이 발생하는지 궁금합니다.

+0

머리 속에 넣는 프로젝트가 정상적으로 작동합니다. 문제는 코드에 특정한 것이어야합니다. – Quentin

+0

머리에 이것을 추가 했습니까? ' Jackthomson

+0

코드 하단에 코드가 있으므로 스크립트 전에 내용이로드된다는 것을 기억해야합니다. 스크립트를 먼저로드하는 경우 window.onload –

답변

0

당신은 당신의 HTML 어디서나 <script> 태그를 배치 할 수 있습니다 (이유 이내). <script> 태그를 <head>에 넣을 때 발생할 수있는 유일한 문제는 먼저로드 할 것입니다. HTML이 작동하는 방식은 코드를 순서대로 처리한다는 것입니다. 즉, 자바 스크립트에서 코드 HTML 코드를 참조하여 자바 스크립트가 먼저 나오면 현재 요소를 찾을 수 없다는 오류가 발생합니다. 참조.

이를 피하기 위해 JS는 종종 마지막에 넣습니다. 당신이 <head>에 JS 필요 어떤 이유로, 당신은 두 가지 옵션이있는 경우 :

  • 는 버튼의 내부 코드를 넣습니다. 이는 문서가 모든 것을로드하고 버튼을 눌렀을 때 HTML을 참조하는 JavaScript 만 실행하기 때문에 작동합니다.
  • 원하지 않는 경우 사용자가 버튼을 눌러야하는, 또는 버튼을 다른 이유로 작동하지 않습니다는, 당신은 <body onload="script();">과 같은 기능을 내장 할 수 있습니다. 이 예제에서는 본문이로드 된 후에 만 ​​script() 안에 코드를 실행합니다. 문제가 해결되지 않으면, 당신은 document.onload = function ... 같은 다른 유사한 함수들이 그냥를 사용하거나 jQuery의 $(document).ready()

희망이 도움이!

관련 문제