GeneralDlg.htm 
<input type="text" style="behavior:url('GeneralDlg.htc');"> <input type="text" style="behavior:url('GeneralDlg.htc');" defineType="FontDlg"> <input type="text" style="behavior:url('GeneralDlg.htc');" defineType="OpenDlg"> <input type="text" style="behavior:url('GeneralDlg.htc');" defineType="SaveDlg">
  
GeneralDlg.htc
  
<public:property name="defineType"> <public:attach event=oncontentready onevent=initGeneralDlg()> <script> //默认颜色 var strColor=""; //默认字体 var strFont=""; //对象 var vColorObject=null; var vFontObject=null; var vFontDiv=null; var vOpenObject=null; var vSaveObject=null; //参数[ColorDlg,FontDlg,OpenDlg,SaveDlg] var strDefineType=""; function initGeneralDlg() {   //初始化组件  if(defineType)  {strDefineType=defineType;}  else  {strDefineType="ColorDlg";}  initByType(strDefineType);  //事件绑定  element.attachEvent("onmousedown",onMouseDown);  } //元素中鼠标按下[显示面板] function onMouseDown() {  if(strDefineType=="ColorDlg")  {     strColor=chooseColor();   element.value=strColor;   element.style.backgroundColor=strColor;  }  else if(strDefineType=="FontDlg")  {   chooseFont();  }  else if(strDefineType=="OpenDlg")  {   try   {    vOpenObject.CancelError=true;    vOpenObject.ShowOpen();    element.value=vOpenObject.filename;   }   catch(e)   {    //window.confirm(e);   }  }  else if(strDefineType=="SaveDlg")  {   try   {    vSaveObject.CancelError=true;    vSaveObject.ShowSave();    element.value=vSaveObject.filename;   }   catch(e)   {    //window.confirm(e);   }  } } //颜色滴管 function chooseColor() {  var strReturnColor=vColorObject.ChooseColorDlg(strColor.substr(1));  strReturnColor=strReturnColor.toString(16);  if(strReturnColor.length<6)  {     var strTempString="000000".substring(0,6-strReturnColor.length);     strReturnColor=strTempString.concat(strReturnColor);  }  return "#"+strReturnColor; } //字体选择 function chooseFont() {  vFontDiv.style.display="";  vFontDiv.style.left=getElementDefineLeft(element);  vFontDiv.style.top=getElementDefineTop(element)+element.offsetHeight;  element.document.attachEvent('onmousedown',onDocumentMouseDown); } function onFontChange() {  var vObject=window.event.srcElement;  strFont=vObject.options[vObject.selectedIndex].text;  element.value=strFont;  element.style.fontFamily=strFont; } function onDocumentMouseDown() {  if(vFontDiv.contains(event.srcElement))  {   return;  }  if(event.srcElement==element)  {   return;  }  element.value=strFont;  element.style.fontFamily=strFont;  vFontDiv.style.display="none";  element.document.detachEvent("onmousedown",onDocumentMouseDown); } function initByType(strType) {  element.readOnly="true";  if(strType=="ColorDlg")  {   if(element.value)   {strColor=element.value;}   else   {strColor="#FFFFFF";}   element.style.backgroundColor=strColor;   vColorObject=document.createElement("object");   vColorObject.classid="clsid:3050F819-98B5-11CF-BB82-00AA00BDCE0B";   vColorObject.codeBase="";   vColorObject.style.width=0;   vColorObject.style.height=0;   window.document.body.insertAdjacentElement("afterbegin",vColorObject);  }  else if(strType=="FontDlg")  {   if(element.value)   {strFont=element.value;}   else   {strFont="宋体";}   element.style.fontFamily=strFont;      vFontObject=document.createElement("object");   vFontObject.classid="clsid:3050F819-98B5-11CF-BB82-00AA00BDCE0B";   vFontObject.codeBase="";   vFontObject.style.width=0;   vFontObject.style.height=0;   window.document.body.insertAdjacentElement("afterbegin",vFontObject);      vFontDiv=document.createElement("div");   var vSelect=document.createElement("select");   vSelect.style.border="1px solid #000000";   vSelect.length=vFontObject.fonts.count;   for(kIndex=1;kIndex<=vFontObject.fonts.count;kIndex++)   {    vOption=document.createElement("option");    vOption.value=kIndex;    vOption.text=vFontObject.fonts(kIndex);    vSelect.add(vOption);   }   vSelect.attachEvent("onchange",onFontChange);   vFontDiv.appendChild(vSelect);   window.document.body.insertAdjacentElement("afterbegin",vFontDiv);   vFontDiv.style.display="none";   vFontDiv.style.position="absolute";  }  else if(strType=="OpenDlg")  {   vOpenObject=document.createElement("object");   vOpenObject.classid="clsid:F9043C85-F6F2-101A-A3C9-08002B2F49FB";   vOpenObject.codeBase="http://activex.microsoft.com/controls/vb5/comdlg32.cab";   vOpenObject.style.width=0;   vOpenObject.style.height=0;   window.document.body.insertAdjacentElement("afterbegin",vOpenObject);  }  else if(strType=="SaveDlg")  {   vSaveObject=document.createElement("object");   vSaveObject.classid="clsid:F9043C85-F6F2-101A-A3C9-08002B2F49FB";   vSaveObject.codeBase="http://activex.microsoft.com/controls/vb5/comdlg32.cab";   vSaveObject.style.width=0;   vSaveObject.style.height=0;   window.document.body.insertAdjacentElement("afterbegin",vSaveObject);  } } //取元素绝对位置Left function getElementDefineLeft(vObject) {  var iElementLeft=vObject.offsetLeft;  while(vObject=vObject.offsetParent)  {   iElementLeft+=vObject.offsetLeft;  }  return iElementLeft; } //取元素绝对位置Top function getElementDefineTop(vObject) {  var iElementTop=vObject.offsetTop;  while(vObject=vObject.offsetParent)  {      iElementTop+=vObject.offsetTop;  }  return iElementTop; } </script> </public:attach>  
 
  |