2011-04-03 148 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>