2016-11-18 3 views
-1

私はsocket.IOをやっており、チャットの例から始めました。私のチャットサービスは今では非常に精巧ですが、オリジナルのチュートリアルに基づいています。チュートリアルでは、bodyタグの末尾にhtmlのheadタグにSocket.IOを入れてください

<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のコードHTMLコードで何かを参照しようとすると、JavaScriptが最初に来ると、あなたの要素を見つけることができないというエラーが発生します参照してください。

これを避けるには、JSを最後に置くことがよくあります。何らかの理由で<head>にJSが必要な場合は、2つのオプションがあります。

  • ボタンの内側にコードを挿入します。これは、ドキュメントがすべてをロードしてから、ボタンが押されたときにHTMLを参照するJavaScriptを実行するだけで機能します。
  • ボタンを押す必要がない、または何らかの理由でボタンが機能しないようにするには、<body onload="script();">などの組み込み関数を使用できます。この例では、本体がロードされた後にのみscript()のコードが実行されます。これが動作しない場合は、document.onload = function ...のような他の同様のfuncionsを使用することができるか、jQueryの$(document).ready()

は、この情報がお役に立てば幸い!

関連する問題