1.?JavaScript對象的引用
為了減少JavaScript對象的下載次數,Tasian只會在瀏覽器第一次請求應用時才會下載JavaScript文件。JavaScript對象只會駐留在Top級窗體,任何其它窗體需要引用到該JavaScript對象,只需要在引如下的方式進行引用就行:
需要引用的窗體Button?=?top.Button?//參閱MscrRouter.js
而Button真正定義的JavaScript文件處于Top窗體,為了保證定義的對象格式能跨瀏覽器有效,Tasian使用了如下的格式進行對象定義:
//定義對象名
function?MscrButton()
{
};
//定義對象的方法
MscrButton.onClick?=?function(strWin,?strName)
{
MscrSystem.setAction(strWin,?strName,?"click",?"");?
};
請注意,在每個函數后面都有一個分號,這一點對于Tasian非常的重要。因為Tasian中所使用的JavaScript文件都是經過壓縮的,并且將全局的JavaScript對象定義合成在一個JavaScript文件中。它的好處是減少網絡流量、減少JavaScript對象對客戶端資源的占用及減少對服務器請求的發送。
2.?遮罩運用
遮罩是指在一個對象上放置一個新的對象,新對象便是遮罩層。它能截獲所有被遮罩對象的事件。
Tasian所有的窗體都是在一個Iframe,?對于窗體拖動,在IE中能容易地進行事件捕捉處理,可以在非IE的瀏覽器中,當Mouse移到Iframe時,該Iframe將會最先處理該事件,使得對Iframe的拖動無效。所以Tasian會在Iframe上加上一個可以關開的遮罩層DIV元素,當要進行窗體對象拖動時,該層會打開,當拖動完成后,該層會關閉。
3.?模態窗體Tasian有一個特殊的窗體,只有當它關閉時才能操作其它窗體內容。該窗體叫模態窗體。在JavaScript實現模擬窗體時,也是使用了一個DIV層,使得它始終于模態窗體的下一級,這樣它就能截獲所有對它父窗體的操作事件。
4.?動態事件綁定
在IE在動態事件綁定是通過attachEvent實現的,而在Mozilla系列是使用addEventListener。以下是代碼摘自document.js兩者的使用方法
if?(top.isIE)
{
oDB.setCapture();
oDB.attachEvent("onmousemove",?__resizingMe);
oDB.attachEvent("onmouseup",?__endResizeMe);
}
else
{
document.captureEvents(Event.MOUSEEVENT?|?Event.MOUSEUP);?
document.addEventListener("mousemove",?__resizingMe,?false);
document.addEventListener("mouseup",?__endResizeMe,?false);
}
….
if?(top.isIE)
{
oDB.detachEvent("onmousemove",?__resizingMe);
oDB.detachEvent("onmouseup",?__endResizeMe);
oDB.releaseCapture();
}
else
{
document.releaseEvents(Event.MOUSEMOVE?|?Event.MOUSEUP);
document.removeEventListener("mousemove",?__resizingMe,?false);
document.removeEventListener("mouseup",?__endResizeMe,?false);
}
5.?Style對象
對于IE中HTML元素的Style對象其強大之處大家都了解,可是對于Mozilla中HTML的Style對象由于其相關介紹實在太少,所以大家都對它很陌生。其實Mozilla中的Style仍然很強大,IE能完成的功能,它大都能完成,只不過大家不了解罷了。比如IE中有filter屬性用來設置漸近色,而Mozilla中可以用alpha實現。
以下代碼摘自MscrSystem.js
if?(!isIE)
{
oEnMsk.style.filter?=?"alpha(opacity?=?35)";
oEnMsk.style.MozOpacity?=?0.35;
}
else
{
var?strHTML?=?"
strHTML?+=?">";
oObj.parentNode.insertAdjacentHTML("BeforeEnd",?strHTML);
}
當然Mozilla的Style屬性遠不止如此,它還可以設置DIV的外觀:圓形、郁圓形等。