2013-03-12 71 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