我正在学习Dojo Toolkit,并且遇到了关于dojo/domReady!的有线问题。我有一个工作示例,如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tutorial: Hello Dojo!</title>
<!-- load Dojo -->
<script>
var dojoConfig = {
async: true,
};
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.12.1/dojo/dojo.js"></script>
</head>
<body>
<script>
require([
'dojo/dom',
'dojo/dom-construct',
'dojo/domReady!'
], function (dom, domConstruct) {
var greetingNode = dom.byId('greeting');
domConstruct.place('<em> Dojo!</em>', greetingNode);
});
</script>
<!-- <script src="./script.js"></script> -->
<h1 id="greeting">Hello</h1>
</body>
</html>
但是,如果我将javascript代码移到一个外部文件中,并在<h1 id...</h1>之前将其作为源代码,它将无法工作。(这太奇怪了,代码可以在StackOverflow的页面内HTML编辑器中工作!)
require([
'dojo/dom',
'dojo/dom-construct',
'dojo/domReady!'
], function (dom, domConstruct) {
var greetingNode = dom.byId('greeting');
domConstruct.place('<em> Dojo!</em>', greetingNode);
});<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Tutorial: Hello Dojo!</title>
<!-- load Dojo -->
<script>
var dojoConfig = {
async: true,
};
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.12.1/dojo/dojo.js"></script>
</head>
<body>
<script src="./script.js"></script> <!-- this position is not OK in my local machine-->
<h1 id="greeting">Hello</h1>
<!-- <script src="./script.js"></script> --> <!-- this position is OK-->
</body>
</html>
但它实际上在我的本地计算机上不起作用,请看屏幕截图:

有人能帮我吗?提前感谢!
发布于 2017-03-28 13:55:46
您应该将以下代码移动到HTML文件的头部:
<script>
require([
'dojo/dom',
'dojo/dom-construct',
'dojo/domReady!'
], function (dom, domConstruct) {
var greetingNode = dom.byId('greeting');
domConstruct.place('<em> Dojo!</em>', greetingNode);
});
</script>紧接着
<script>
var dojoConfig = {
async: true,
};
</script>基本上,dojo/domReady!会等到DOM加载完成后才会返回,而IMO并不是按照您的问题中描述的方式来设计的。
https://stackoverflow.com/questions/43055492
复制相似问题