Dojo事件处理程序不工作
问题描述:
红色 我已经注册了事件处理程序一个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>
谢谢。
答
如果在dojoAddOnLoad
上添加点击处理程序,会更好。
代码:
function onClickHandler(event) {
alert('clicked!')
}
dojo.addOnLoad(function(){
dojo.connect(dojo.byId('para'), 'onclick', onClickHandler);
});
答
首先,dojo.require("dojo.event.*");
是不正确的。我不认为你可以加载通配符到dojo.require
。另外dojo.event
似乎已被弃用:现在只有dojo.connect
。
您正在从CDN(xd =跨域)加载。这是一个“异步”加载 - 这意味着当您的代码运行时,Dojo库可能尚未加载。
您需要将用户代码放入dojo.addOnLoad
或更新的样式dojo.ready
。在所有Dojo模块下载完成后调用这些模块。
答
改为使用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>