分享

Dojo dojo.ready函数

 LibraryPKU 2013-11-12

dojo.ready

dojo.addOnLoad  注意:dojo.ready() is a shortcut for dojo.addOnLoad() added in Dojo 1.4

由于牵涉到HTML 页面和浏览器,要确定“万事俱备”的时机可不容易。在我们自己的 JavaScript 代码开始运行之前,首先 DOM 树需要准备好以供操作,而且 Dojo 库(以及声明的任何依赖模块)也需要全部加载完毕。因为“万事俱备”这个概念在不同的浏览器里是不同的,所以 Dojo 干脆为此提供了一个非常可靠的、跨浏览器的函数—— dojo.ready 。我们给它传一个函数作为参数,这个函数就会在“万事俱备”的时候执行。

  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <title>Tutorial: Hello Dojo!</title>  
  6.     <!-- load Dojo -->  
  7.     <script src="http://ajax./ajax/libs/dojo/1.6/dojo/dojo.xd.js"></script>  
  8.     <script>  
  9.         dojo.ready(function(){  
  10.             alert("Dojo version " + dojo.version + " is loaded");  
  11.         });  
  12.     </script>  
  13. </head>  
  14. <body>  
  15.     <h1 id="greeting">Hello</h1>  
  16. </body>  
  17. </html>  
 

 

 

我们传给dojo.ready 的这个函数应该会在页面加载好以后弹出一个 alert 对话框。必须承认, Dojo version 属性(包含版本信息)对于此类示例程序非常有用。当我们以后更为深入地学习 Dojo 时,这样的 alert 对话框就会变得越来越讨厌了。于是我们就会想要学习往浏览器控制台打印日志的方法。不过目前我们暂时略过。

 

能加载Dojo 的确不错,但您一定更希望操作这个刚刚载入了 Dojo 的页面。我们将会在其他教程中深入讲解这方面的内容。而现在,我们只是简单地获取我们的 <h1> 元素的引用然后更新其内容。

  1. <!DOCTYPE html>  
  2. <html>  
  3. <head>  
  4.     <meta charset="utf-8">  
  5.     <title>Tutorial: Hello Dojo!</title>  
  6.     <!-- load Dojo -->  
  7.     <script src="http://ajax./ajax/libs/dojo/1.6/dojo/dojo.xd.js"></script>  
  8.     <script>  
  9.         dojo.ready(function(){  
  10.             dojo.byId("greeting").innerHTML += ", from " + dojo.version;  
  11.         });  
  12.     </script>  
  13. </head>  
  14. <body>  
  15.     <h1 id="greeting">Hello</h1>  
  16. </body>  
  17. </html>  
 

 

 

这次,在我们的“万事俱备”函数里使用了dojo.byId 来获取 DOM 树中含有给定 ID 的元素,然后给它的 innerHTML 属性添加 Dojo 的版本信息字符串。

 

需要特别注意的是,您可以对dojo.ready 做任意次调用。您每一次传入的这些函数会按照传入顺序依次执行。实际上,如果您有比较多的代码,常见的做法是定义一个具名函数(非匿名函数)然后把函数名传给 dojo.ready

[javascript] view plaincopy
  1. function init() {  
  2.     alert("Dojo ready, version:" + dojo.version);  
  3.     // More initialization here  
  4. }  
  5. dojo.ready(init);  
 

 

请注意,当我们传入函数的时候,我们只是在传函数名,而不包括其后的任何参数。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多