2015年10月3日 星期六

dojox/layout/ContentPane (part II)

dojox/layout/ContentPane (part II)

簡介

dojox/layout/ContentPane 在下載新內容以更換窗格的內容時,還提供了五個回呼函式,對應五種觸發事件。這五個函式分別是:

  1. onDownloadStart()
  2. onUnload()
  3. onLoad()
  4. onDownloadEnd()
  5. onDownloadError()

當設定 "content" 屬性直接改變內容時,只會觸發並執行 onUnload() 及 onLoad() 兩個函式。而在引入外部的網頁時,則會觸發並依序執行 onDownloadStart()、onUnload()、onLoad() 及 onDownloadEnd() 四個函式,onDownloadError() 只有在下載外部網頁發生錯誤時才會觸發和執行。

其中,onDownloadStart() 這個函式要特別注意,它一定要回傳 (return) 一個字串,根據 dojo 的說明文件,這個字串是用來做為下載訊息之用,如果沒有回傳一個字串,會引發錯誤。切記!切記!

範例

這個範例也是建立兩個按鈕及一個窗格,第一個按鈕直接改變內容,第二個按鈕則從外部引入網頁。執行時會用彈出視窗顯示正在執行的步驟,請同時注意窗格中內容的變化,藉以瞭解函式執行的時機。

CSS

<style>
html{
  width:100%;
  height:100%;
}
 body {
  margin:0 auto;
  width:1000px;
  height:100%;
  padding:0;
  overflow:hidden;
}
#mainCP {
  width:400px;
  height:400px;
  border: 1px solid gray;
}
</style>

CSS 的主要目的只是在把按鈕和窗格移到中間,比較容易觀看及操作。

HTML

<body class="claro">
  
  
  
</body>

Script


onUnload() 會在原始內容被清除前執行,此時原始內容的節點 (node) 和 dijit 都還在,如果要針對這些節點和 dijit 做一些事,包括清除事件監聽的機制等等,都可以在此時完成,隨後節點和 dijit 就被清除了。

沒有留言:

張貼留言