前面說了dojo在ajax方面的一些個(gè)東西,感覺要理解透徹還有些dojo內(nèi)部的東西需要理解,所以想好好看一下dojo的東西,惡補(bǔ)一陣:-)
看了會(huì)官方一些個(gè)文檔,有了些許體會(huì)。
dojo.js被包含進(jìn)來后,一些對(duì)象和函數(shù)就可以用了,在用JSEclipse編輯的時(shí)候,可以看到一些,不過是包含在dojo.js中的,官網(wǎng)說還包括boostrap文件里的,我查了下,有bootstrap1.js和bootstrap2.js,不過那些對(duì)象直接顯示不出來,估計(jì)有什么地方要設(shè)置,弄清楚后再補(bǔ)上來。
可用的東東有:
1.dojo.render對(duì)象:該對(duì)象存放了dojo運(yùn)行環(huán)境的一些信息。
dojo.render.name:根據(jù)dojo.render.name = navigator.appName,可以知道這是瀏覽器的名稱,但是直接顯示出來是空的,估計(jì)還沒有被賦值,運(yùn)行
1 dojo.render.name = navigator.appName;
2 alert(dojo.render.name);
我的出來的是:Microsoft Internet Explorer。
dojo.render.os:看名字就知道與操作系統(tǒng)有關(guān),事實(shí)確實(shí)如此。這個(gè)屬性直接打印出來是[object Object],可以知道是一個(gè)對(duì)象。查了下源代碼,發(fā)現(xiàn)這個(gè)對(duì)象有3個(gè)屬性:dojo.render.os.osx,當(dāng)操作系統(tǒng)為"MacOS"取值為true;dojo.render.os.linux,當(dāng)操作系統(tǒng)為"Linux"的時(shí)候?yàn)閠rue;dojo.render.os.win,Windows系統(tǒng)取值為true。3個(gè)屬性的默認(rèn)值都為false,一進(jìn)dojo,則某一個(gè)屬性被賦值為true,我的Windows系統(tǒng)當(dāng)然是dojo.render.os.win為true了。根據(jù)源碼,若不是這3種系統(tǒng),dojo.render.os.linux將賦值為true。
dojo.render.ver,官網(wǎng)上說與dojo.version一樣,但我一打印發(fā)現(xiàn)不對(duì),查了下代碼,發(fā)現(xiàn)如下一段:dojo.render.ver = parseFloat(navigator.appVersion, 10),是與瀏覽器版本號(hào)有關(guān),我這里dojo.render.ver的值為4。再找dojo.version,發(fā)現(xiàn)這么一段:
dojo.version = {
major: 0, minor: 2, patch: 2, flag: "",
revision: Number("$Rev: 2836 $".match(/[0-9]+/)[0]),
toString: function() {
with (dojo.version) {
return major + "." + minor + "." + patch + flag + " (" + revision + ")";
}
}
};
將dojo.version打印一下,是0.2.2(2836),上面一段的結(jié)果。
dojo.render.html,這也是一個(gè)對(duì)象,它有好幾個(gè)屬性。dojo.render.html.capable,宿主環(huán)境是否支持html,一般來說,都是true。其它幾個(gè)是與瀏覽器類型有關(guān)的,都是布爾類型。dojo.render.html.moz,當(dāng)瀏覽器為Mozilla或者M(jìn)ozilla核心的瀏覽器(例如 Firefox)時(shí)為true; dojo.render.html.safari,使用蘋果的Safari瀏覽器的時(shí)候?yàn)閠rue,dojo.render.html.ie,平常的機(jī)器這個(gè)屬性都是true,因?yàn)槲覀兓臼怯肕icrosoft Internet Explorer,即ie瀏覽器;dojo.render.html.opera,使用Opera瀏覽器的時(shí)候?yàn)閠rue;dojo.render.html.khtml,使用KHTML瀏覽器(例如Konqueror,但是我還就真沒聽過這種KHTML瀏覽器,其它的都知道,看來還是知識(shí)不夠,唉~)的時(shí)候?yàn)閠rue。dojo.render.html對(duì)象主要是用來判斷瀏覽器類型的。我的機(jī)器上dojo.render.html.ie為true。
其它還有dojo.render.svg,dojo.render.vml,dojo.render.swf,dojo.render.swt,由上面的資料,可以知道是對(duì)SVG、VML、SWF、SWT的支持,它們都有個(gè)capable屬性,表示是否支持該技術(shù),ie5.0以上版本支持VML,所以我的dojo.render.vml.capable為true,SVG需要裝插件,所以不支持該項(xiàng),dojo.render.svg.capable為false,dojo.render.swf.capable也為false,這里的swf不是指flash的swf,而是Simple Web Framework,Simple Web Framework (SWF)是一個(gè)基于事件的web框架.它很適合于那些想要開發(fā)胖客戶端Web應(yīng)用程序但又不想轉(zhuǎn)向JSF的Struts開發(fā)人員。SWF跟Struts一樣也是構(gòu)建在Jakarta commons基礎(chǔ)之上,但使用一個(gè)不同的request processor。SWF事件模型支持基于XmlHttpRequest的事件提交。至于dojo.render.swt,不清楚了,難道與java中的SWT有關(guān)系?這四個(gè)對(duì)象的其它屬性,在源碼中居然沒看到相應(yīng)代碼??以后弄明白再回來補(bǔ)過。
?。玻?span id="wmqeeuq" class="pre">dojo.version對(duì)象。在上面已經(jīng)講過這個(gè)對(duì)象,是dojo庫(kù)文件的版本,沒啥好研究的了。
?。常甦ojo.hostenv對(duì)象,個(gè)人認(rèn)為里面的東西很有看頭,不過要慢慢講來也太費(fèi)時(shí)間了,具體可以去看源碼中那幾個(gè)hostenv_XXX.js文件,dojo.hostenv.getText函數(shù)和dojo.hostenv.println函數(shù)還有點(diǎn)意思,以后隨時(shí)補(bǔ)充吧。
下面講一講dojo中的一些基本函數(shù)。