<html> <head> <script type="text/javascript"> // Dojo configuration djConfig = { isDebug: true }; </script> <script type="text/javascript" src="../../dojo.js"></script> <script type="text/javascript"> dojo.require("dojo.event.topic"); function Subscriber(displayNode){ this.displayNode = displayNode; this.update = function(message) { this.displayNode.innerHTML = message; }; } var clickCount = 0; function sendMessage1() { topic1.sendMessage("Message " + ++clickCount); } function sendMessage2() { topic2.sendMessage("Message " + ++clickCount); } var subCounter = 0; function addSubscriber(subName){ var container = dojo.byId("container"); var newSub = document.createElement("div"); newSub.id = "subscriber"+subCounter++; newSub.innerHTML = newSub.id; container.appendChild(newSub); return new Subscriber(newSub); } dojo.addOnLoad(function(){ topic1 = dojo.event.topic.getTopic("testTopic1"); topic2 = dojo.event.topic.getTopic("testTopic2"); var sub1 = addSubscriber(); var sub2 = addSubscriber(); topic1.subscribe(sub1, "update"); topic1.subscribe(sub2, "update"); topic2.subscribe(sub2, "update"); }); </script> </head> <body> Check your javascript log; the scripts were all loaded in the head. <div id="container"> </div> <button id="publisher" onclick="sendMessage1();"> Publish a message on Topic1 </button> <button id="publisher2" onclick="sendMessage2();"> Publish a message on Topic2 </button> <button onclick="dojo.event.topic.subscribe('testTopic1', addSubscriber(), 'update');"> Add a new subscriber </button> </body> </html>