2013-03-12 31 views
2

我是JavaScript和dojo的新手,并且正在尝试编写代码以动态导航到 另一个URL。这似乎很容易做到与JavaScript,但我不能 得到它与dojo/on一起工作。 这是我的示例代码。微不足道的回调工作正常。 dojo/on回调 调用回调,但新页面从不出现。我必须动态地和dojo做 ,因为我的项目需要它。 任何人都知道为什么这是失败的,以及如何使其工作?试图动态导航到使用dojo的新页面

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/dojo.js"> 
</script> 
<script type="text/javascript"> 
callback = function() { 
    window.location.href = "about:blank"; 
    console.debug("callback invoked"); 
} 
function init() { 
    var node = dojo.byId("test"); 
    var childNode = dojo.create("a", { href : "" }, node); 
    childNode.innerText = "dojo callback click here"; 
    require(["dojo/on"], function(on){ 
     on(childNode, "click", callback); 
    }); 
} 
dojo.ready(init); 
</script> 
<div id="test"> 
    <p> 
    <a href = "javascript:callback()">trivial callback click here</a> 
</div> 

回答

4

从Dojo 1.7开始,AMD loader是使用Dojo模块的首选方式。

<!DOCTYPE html> 
<html> 
<head> 
    <title>Test</title> 
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/dojo/1.8.3/dojo/dojo.js"></script> 
    <script type="text/javascript"> 
    require(['dojo/on', 'dojo/dom', 'dojo/domReady!'], function(on, dom){ 
     on(dom.byId('theDiv'), 'click', function(){ 
      alert("Click!") // replace this line with location changes 
     }) 
    }) 
    </script> 
</head> 
<body> 
    <div id="test"> 
     <a href="javascript:void(0);" id="theDiv">Click Me</a> 
    </div> 
</body> 
</html> 

在本例中,芯的dojo.js被加载(为所申请),但不同的是我使用的需要的方法,附接的dojo/onclick方法到div。理想情况下,您可以使用单独的JavaScript文件来指定页面的行为,但对于此示例,将js嵌入索引页面就足够了。

使用解析器,您可以使用声明<script type="dojo/on" data-dojo-event="click">...</script>,但由于各种原因,您应该使用编程解析并使用JavaScript文件以获得最大效率。

此外,定义在全球范围内的功能/方法/变量:

<script type="text/javascript"> 
callback = function() { 
    window.location.href = "about:blank"; 
    console.debug("callback invoked"); 
} 
</script> 

...不是推荐的有更好的选择。

+0

工作完美,谢谢! – stleary 2013-03-12 06:23:15

+0

很高兴能帮到你! – Phix 2013-03-12 06:46:59