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的外观:圆形、郁圆形等。