首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Wired dojo/domReady!行为

Wired dojo/domReady!行为
EN

Stack Overflow用户
提问于 2017-03-28 04:04:10
回答 1查看 45关注 0票数 0

我正在学习Dojo Toolkit,并且遇到了关于dojo/domReady!的有线问题。我有一个工作示例,如下所示:

代码语言:javascript
运行
复制
<!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编辑器中工作!)

代码语言:javascript
运行
复制
require([
    'dojo/dom',
    'dojo/dom-construct',
    'dojo/domReady!'
], function (dom, domConstruct) {
    var greetingNode = dom.byId('greeting');
    domConstruct.place('<em> Dojo!</em>', greetingNode);
});
代码语言:javascript
运行
复制
<!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>

但它实际上在我的本地计算机上不起作用,请看屏幕截图:

有人能帮我吗?提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2017-03-28 13:55:46

您应该将以下代码移动到HTML文件的头部:

代码语言:javascript
运行
复制
<script>
    require([
        'dojo/dom',
        'dojo/dom-construct',
        'dojo/domReady!'
    ], function (dom, domConstruct) {
        var greetingNode = dom.byId('greeting');
        domConstruct.place('<em> Dojo!</em>', greetingNode);
    });
</script>

紧接着

代码语言:javascript
运行
复制
 <script>
        var dojoConfig = {
            async: true,
        };
    </script>

基本上,dojo/domReady!会等到DOM加载完成后才会返回,而IMO并不是按照您的问题中描述的方式来设计的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43055492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档