2011-04-03 145 views
1

红色 我已经注册了事件处理程序一个HTML组件,但它不工作,可能有人请帮助我在此:Dojo事件处理程序不工作

<html> 
    <head> 
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     dojo.require("dojo.event.*"); 
     function openAlert(evt) { 
     alert("Hello! This is an alert from Dojo!"); 
     } 
    </script> 
    </head> 
    <body> 
    <p id="para">This is a paragraph.</p> 
     <script type="text/javascript"> 
     var para = dojo.byId("para"); 
     dojo.event.connect(para, "onclick", openAlert); 
     </script> 
    </body> 
</html> 

谢谢。

回答

3

如果在dojoAddOnLoad上添加点击处理程序,会更好。

代码:

function onClickHandler(event) { 
    alert('clicked!') 
} 

    dojo.addOnLoad(function(){ 
     dojo.connect(dojo.byId('para'), 'onclick', onClickHandler); 
    }); 

Your working example

3

首先,dojo.require("dojo.event.*");是不正确的。我不认为你可以加载通配符到dojo.require。另外dojo.event似乎已被弃用:现在只有dojo.connect

您正在从CDN(xd =跨域)加载。这是一个“异步”加载 - 这意味着当您的代码运行时,Dojo库可能尚未加载。

您需要将用户代码放入dojo.addOnLoad或更新的样式dojo.ready。在所有Dojo模块下载完成后调用这些模块。

1

改为使用dojo.connect。您只需要导入dojo,不需要额外的软件包,并将dojo.event.connect更改为dojo.connect;其余代码保持不变,请参阅下文。

<html> 
    <head> 
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function openAlert(evt) { 
      alert("Hello! This is an alert from Dojo!"); 
     } 
    </script> 
    </head> 
    <body> 
    <p id="para">This is a paragraph.</p> 
     <script type="text/javascript"> 
     var para = dojo.byId("para"); 
     dojo.connect(para, "onclick", openAlert); 
     </script> 
    </body> 
</html>