DOJO事件处理程序无法正常工作

时间:2011-04-03 06:47:31

标签: dojo

红色a 我已经注册了一个带有HTML组件的事件处理程序,但是它不起作用,任何人都可以帮助我:

<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 个答案:

答案 0 :(得分:3)

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

代码:

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

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

Your working example

答案 1 :(得分:3)

首先,dojo.require("dojo.event.*");不正确。我认为您不能将通配符加载到dojo.require。此外,dojo.event似乎已被弃用:现在只有dojo.connect

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

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

答案 2 :(得分: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>