source.addEventListener('message', function(event){…略…});これで、それぞれの関数に各イベント用の処理を用意すればよい、というわけです。カスタム・イベントを利用することで、それぞれの処理をそれぞれの関数に定義するようになります。onmessageのイベント用関数内で何もかも処理する必要はありません。必要に応じて送信するイベントを変更し、受け取る側で各イベントごとに処理を分ければ良いのです。また、このやり方なら、特定のイベントだけ処理を省いたりすることも容易になります。
source.addEventListener('start', function(event){…略…});
source.addEventListener('end', function(event){…略…});
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
※sample.htmlの修正 <!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>タイトル</title> <style> h1 { font-size: 14pt; padding: 1px 10px; border-style: solid; border-width: 0px 0px 2px 7px; border-color:green; } body { background: #EEFFEE; } article { background: white; margin: 10px 0px; padding: 10px; } </style> <script type="text/javascript"> var counter = 0; var EventSource = window.EventSource || window.MozEventSource; function initial(){ if (!EventSource){ alert("EventSourceが利用できません。"); return; } var source = new EventSource('event.php'); source.addEventListener('message', function(event){ var ul = document.getElementById('msgs'); ul.innerHTML = '<li>' + counter++ + ":" + event.data + '</li>' + ul.innerHTML; }); source.addEventListener('start', function(event){ var ul = document.getElementById('msgs'); ul.innerHTML = '<p>※開始します。</p>'; counter = 0; }); source.addEventListener('end', function(event){ var ul = document.getElementById('msgs'); ul.innerHTML = '<p>※終了しました。</p>' + ul.innerHTML; event.target.close(); }); } </script> </head> <body onload="initial();"> <header> <h1>Sample</h1> </header> <article> <ul id="msgs"></ul> </article> </body> </html>
<< 前へ |