學習Ajax架構之dojo:第二節—Dojo的基本函數及使用執行個體(附原始碼)

來源:互聯網
上載者:User

      從網上搜集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>

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.