I choose , I like…………
要走好明天的路,必须记住昨天走过的路,思索今天正在走着的路。

      从网上搜集Dojo的相关材料,dojo的相关介绍总是让人望而生畏。第一个hello world就搞了一大堆东西,比如widget组件,自定义的script标签等,加上要引入什么css文件,djConfig、dojo.require等等,让人很迷惑。我根据网络中给出的实例,由于涉及的dojo包太多,加上我是初学者,最终也没有配置好,给我的感觉是一个字:“太乱”。这么复杂,到底dojo该怎么使用呢?

      我把问题细化了一下,那么,只需要把dojo当作一个普通的js类库,仅仅引入dojo.js,就像prototype那样,可以使用吗?OK!

      闲话少说,来看看如何使用dojo.js中的几个基本函数。

 

1. dojo.js的引入方法

说明:dojo的发行包分为两个版本:Ajax和widget版本。在这里我下载的是dojo-0.3.1-ajax版本

[

要下载完整的Dojo框架,请点击这里下载:http://download.dojotoolkit.org/release-0.3.1/dojo-0.3.1-ajax.zip

]

      下载下来的dojo.js是压缩(remove comments and space)后的代码, 要阅读的话,建议阅读dojo.js.uncompressed.js, dojo.js大概有127K, 而未压缩前有211K, ok, 为什么会这么大呢, 原来其已经把部分常用的模块整合进dojo.js里, 因此显得大了一点, build.txt里就说明了默认的dojo.js包含了哪些模块。
      接下来,就是引入的文件是名叫"dojo"的子目录里的dojo.js。

实例:<script type="text/javascript" src="dojo/dojo.js" djConfig="isDebug:true,bindEncoding:'UTF-8'"></script>

注:djConfig属性。第一个isDebug指是否打开FireBug的Console,第二个bindEncoding指xmlhttp使用的编码,这个在以后会用到。
 

2. dojo.connect()的用法

说明:监听普通的dom事件

实例1:页面加载时,输出“Hello World!”

<html>
    <head>
        <meta name="generator" content="HTML Tidy, see http://www.w3.org/">
        <meta http-equiv="Content-Type" content= "text/html; charset=iso-8859-1">
        <title>Dojo, Hello World!</title>
        <script type="text/javascript" src="dojoroot/dojo/dojo.js" djConfig="isDebug:true,bindEncoding:'UTF-8'">
        </script>
        <script type="text/javascript">
            function init(){
                alert("Hello World!");
            }           
            dojo.connect(dojo, "loaded", "init");
        </script>
    </head>
    <body>
        <input id="hello" value="hello" type="button"/>
    </body>
</html>

 

实例2:页面加载时,输出“Hello Karl”

<script type="text/javascript">

var name = "Mark"
function sayHello()
{
 alert("Hello " + this.name);
}
var obj = {
 name: "Karl"
}
dojo.addOnLoad(function(){
 var btn = dojo.byId('hello');
 dojo.connect(btn,"onclick",obj,sayHello);//注意这行的第三个和第四个参数
});

</script>

 

3. dojo.event.connect的用法(结合package机制理解)

说明:在引入event包之后,如何监听dom事件呢?强大的dojo.event.connect出场。

实例:页面加载时,直接弹出“Hello World!”

<html>
    <head>
        <meta name="generator" content="HTML Tidy, see http://www.w3.org/">
        <meta http-equiv="Content-Type" content= "text/html; charset=iso-8859-1">
        <title>Dojo, Hello World!</title>
        <script type="text/javascript" src="dojo/dojo.js" djConfig="isDebug:true,bindEncoding:'UTF-8'">         </script>
        <script type="text/javascript">
              dojo.require("dojo.event.*");
              function init(){
                   alert("Hello World!");
              }           
              dojo.event.connect(dojo, "loaded", "init");
        </script>
    </head>
    <body>      
    </body>
</html>

 

4. dojo.addOnLoad()的用法

说明:页面自动加载功能

实例:鼠标点击按钮时,弹出对话框。即,button的onclick事件

<html>
    <head>
        <meta name="generator" content="HTML Tidy, see http://www.w3.org/">
        <meta http-equiv="Content-Type" content= "text/html; charset=iso-8859-1">
        <title>Dojo, Hello World!</title>
        <script type="text/javascript" src="dojo/dojo.js" djConfig="isDebug:true,bindEncoding:'UTF-8'">
        </script>
        <script type="text/javascript">
            dojo.require("dojo.event.*");
            function helloworld(){
                var myfirst = document.getElementById("hello").value;
                alert(myfirst);
            }
           
            dojo.addOnLoad(function(){
                alert("Hello, welcome !");
                var first = document.getElementById("hello");
                dojo.event.connect(first, "onclick", helloworld);
            })
        </script>
    </head>
    <body>
        <input id="hello" value="This is my first page!" type="button"/>
    </body>
</html>

 

5. dojo.byId的用法

说明:dojo.byId就等同于常用的document.getElement 。

实例:加载页面时将文本框的内容清空

<html>
    <head>
        <meta name="generator" content="HTML Tidy, see http://www.w3.org/">
        <meta http-equiv="Content-Type" content= "text/html; charset=iso-8859-1">
        <title>Dojo, Hello World!</title>
        <script type="text/javascript" src="dojo/dojo.js.uncompressed.js" djConfig="isDebug:true,bindEncoding:'UTF-8'">
        </script>
        <script type="text/javascript">
            dojo.require("dojo.event.*");
            function helloworld(){
                var myfirst = document.getElementById("hello").value;
                alert(myfirst);
                var buttonContent = dojo.byId("dropContent");
                buttonContent.value = myfirst;
            }
           
            dojo.addOnLoad(function init(){
                dojo.byId("dropContent").value = "";
                alert("Hello, welcome !");
                var first = document.getElementById("hello");
                dojo.event.connect(first, "onclick", helloworld);
            })
        </script>
    </head>
    <body>
        <input id="hello" value="This is my first page!" type="button"/><input id="dropContent" value="" type="text"/>
    </body>
</html>

 

 

posted on 2008-08-28 15:40  飞翔的Angela  阅读(4453)  评论(5编辑  收藏  举报