source.addEventListener('message', function(event){…略…});
source.addEventListener('start', function(event){…略…});
source.addEventListener('end', function(event){…略…});これで、それぞれの関数に各イベント用の処理を用意すればよい、というわけです。カスタム・イベントを利用することで、それぞれの処理をそれぞれの関数に定義するようになります。onmessageのイベント用関数内で何もかも処理する必要はありません。必要に応じて送信するイベントを変更し、受け取る側で各イベントごとに処理を分ければ良いのです。また、このやり方なら、特定のイベントだけ処理を省いたりすることも容易になります。※リストが表示されない場合
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>
| << 前へ |