【IT168技术文档】
Web Parts的实现有多种方式,由于对.Net 2.0的Web Parts不是很熟,我们用最方便快捷的javascrpt脚本来实现,实现的原理是用Iframe,用户可以自定义自己的桌面,每个Iframe里可以放入一个网页地址,具体要放什么网页,我们可以做一个管理界面,加一个自定义桌面表,可以根据自己的需要,不断的延伸这个功能,做到非常的灵活,强大,这里面有用的XmlHttp技术,让用户自定义自已的桌面时,休验到快速的效果,最后的效果,类似于google的定义功能。现在把实现的脚本代码贴出来,与大家共享,共同进步,这个功能已经在E8.Net工作流开发架构中提供全部源码,E8.Net工作流客户可以直接使用哦!
// Input 0
/**
* get element
* document.getElementById的封装
* 如果浏览器不支持getElementById方法则返回null
*/
function _getElementById(a)
{
return document.getElementById?document.getElementById(a):null
}
/**
* get elements tag name
* document.getElementsByTagName的封装
* 根据tagName返回数组,*返回所有tag。
* 如果浏览器不支持getElementsByTagName方法,则返回空数组
*/
function _getElementsByTagName(a)
{
return document.getElementsByTagName?document.getElementsByTagName(a):new Array()
}
//标志浏览器是否为Safari
var isSafari=navigator.userAgent.indexOf("Safari")>=0;
/**
* 一个标准的colArrayAX替换页面内容典范
* 变量a为地址,aa为回掉处理函数
*/
function _sendXMLRequest(theURL,aa)
{
var xmlHttpObj=getXMLHttpObj();
if(!xmlHttpObj||isSafari&&!aa)
{//特殊浏览器特殊照顾
(new Image()).src=theURL;
}
else
{//正常的浏览器,用XMLHTTP显示内容
xmlHttpObj.open("GET",theURL,true);
xmlHttpObj.setRequestHeader( "CONTENT-TYPE ", "application/x-www-form-urlencoded ");
xmlHttpObj.send(null);
}
}
/**
* 拿到一个可用的XMLHttpRequest对象
*/
function getXMLHttpObj()
{
var a=null;
if(window.ActiveXObject)
{
a=new ActiveXObject("Msxml2.XMLHTTP");
if(!a)
{
a=new ActiveXObject("Microsoft.XMLHTTP");
}
}
else if(window.XMLHttpRequest)
{
a=new XMLHttpRequest();
}
return a;
}
function _del(a)
{
msg="确认不在桌面上显示该模块么?\n\n您可以通过自定义桌面恢复显示!";
if(window.confirm(msg))
{
var module=_getElementById("module_"+a);
if(module)
module.style.display="none";
aI();
}
return false
}
/**
* 查找CSS,将class名字为a的aa自段定义值为ab
* 例如setCSSAttrib("medit","display", "none");
* 则代表将.media的display定义为none
*
*/
function setCSSAttrib(clasName,attrName,attrValue)
{
if(document.styleSheets)
{//浏览器有styleSheets,查找CSS列表并修改
clasName="."+clasName;
for(var i=0;i<document.styleSheets.length;i++)
{
var classI=document.styleSheets[i];
var rulesI=classI.rules;
if(!rulesI)
{
rulesI=classI.cssRules;
if(!rulesI){return}
}
for(var j=0;j<rulesI.length;j++)
{
if(rulesI[j].selectorText.toLowerCase()==clasName.toLowerCase())
{
rulesI[j].style[attrName]=attrValue
}
}
}
}
else
{//浏览器不支持styleSheets,一个元素一个元素地找并修改-_-b
var elementI=_getElementsByTagName("*");
for(var i=0;i<elementI.length;i++)
{
if(elementI[i].className==clasName)
{
elementI[i].style[attrName]=attrValue
}
}
}
}