深入分析dwr中的DWRUtil.$
阿新 • • 發佈:2019-01-27
為了更好的使用dwr的util.js,瞭解 $是必須的
/**
* Find the element in the current HTML document with the given id or ids
* @see http://getahead.ltd.uk/dwr/browser/util/$
*/
var $;
//如果瀏覽器支援document.getElementById那麼進入下面的if塊
//IE和firefox都是支援的
if (!$ && document.getElementById) {
//將$定義為一個函式
$ = function() {
//定義一個數組
var elements = new Array();
//遍歷$函式傳入的引數
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
//如果引數型別為string,那麼通過document.getElementById(element);得到一個物件否折無需轉化
if (typeof element == 'string') {
element = document.getElementById(element);
}
//如果引數只有一個那麼直接返回引數或者document.getElementById(element);函式結束
if (arguments.length == 1) {
return element;
}
//否則將引數物件或經過轉化的物件放入陣列
elements.push(element);
}
//引數為多個,則返回陣列
return elements;
}
}
//倘若瀏覽器不支援document.getElementById,那麼判斷是否支援document.all的用法,如果支援則進入下面////的程式碼段,程式碼段裡面的內容和上面的if段雷同,就不再贅述了
//IE支援document.all,但在firefox下不好用
else if (!$ && document.all) {
$ = function() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string') {
element = document.all[element];
}
if (arguments.length == 1) {
return element;
}
elements.push(element);
}
return elements;
}
}
總結
1) 作者通過使用$函式使程式碼能跨瀏覽器支援,也就是說你甚至可以使用$(id)或者$(name)的方式獲取物件
(如果瀏覽器不支援document.getElementById而只支援document.getElementById,使用$(name)是合適的),作者在原始碼也都是這樣使用的
2)作者在原始碼中大量使用$(x),如果x為string(通常是個id),那麼返回該id代表的物件,否則直接返回該物件
3) 注意在頁面中必須謹慎使用$,不要使用$作為變數 ,很有可能回覆蓋前面的函式定義,到時候可能會有奇怪的現象發生
/**
* Find the element in the current HTML document with the given id or ids
* @see http://getahead.ltd.uk/dwr/browser/util/$
*/
var $;
//如果瀏覽器支援document.getElementById那麼進入下面的if塊
//IE和firefox都是支援的
if (!$ && document.getElementById) {
//將$定義為一個函式
$ = function() {
//定義一個數組
var elements = new Array();
//遍歷$函式傳入的引數
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
//如果引數型別為string,那麼通過document.getElementById(element);得到一個物件否折無需轉化
if (typeof element == 'string') {
element = document.getElementById(element);
}
//如果引數只有一個那麼直接返回引數或者document.getElementById(element);函式結束
if (arguments.length == 1) {
return element;
}
//否則將引數物件或經過轉化的物件放入陣列
elements.push(element);
}
//引數為多個,則返回陣列
return elements;
}
}
//倘若瀏覽器不支援document.getElementById,那麼判斷是否支援document.all的用法,如果支援則進入下面////的程式碼段,程式碼段裡面的內容和上面的if段雷同,就不再贅述了
//IE支援document.all,但在firefox下不好用
else if (!$ && document.all) {
$ = function() {
var elements = new Array();
for (var i = 0; i < arguments.length; i++) {
var element = arguments[i];
if (typeof element == 'string') {
element = document.all[element];
}
if (arguments.length == 1) {
return element;
}
elements.push(element);
}
return elements;
}
}
總結
1) 作者通過使用$函式使程式碼能跨瀏覽器支援,也就是說你甚至可以使用$(id)或者$(name)的方式獲取物件
(如果瀏覽器不支援document.getElementById而只支援document.getElementById,使用$(name)是合適的),作者在原始碼也都是這樣使用的
2)作者在原始碼中大量使用$(x),如果x為string(通常是個id),那麼返回該id代表的物件,否則直接返回該物件
3) 注意在頁面中必須謹慎使用$,不要使用$作為變數 ,很有可能回覆蓋前面的函式定義,到時候可能會有奇怪的現象發生