9. printElementById功能的核心实现
(创建时间:2012年01月31日 00:43:00)
Jangogo : 

JScript
  1.    //增加打印必须的CSS,页面加载的时候运行   
  2.    try{   
  3.       var e__=document.createElement('STYLE');   
  4.       e__.setAttribute('type','text/css');   
  5.       e__.styleSheet.media='print';   
  6.       e__.styleSheet.cssText='.p__{display:none}';   
  7.       document.getElementsByTagName('head')[0].appendChild(e__);   
  8.    }catch(ex){};   
  9.   
  10.    try{   
  11.       var e__=document.createElement('STYLE');   
  12.       e__.setAttribute('type','text/css');   
  13.       e__.styleSheet.media='screen';   
  14.       e__.styleSheet.cssText='#div__pazu__{display:none;}';   
  15.       document.getElementsByTagName('head')[0].appendChild(e__);   
  16.    }catch(ex){};   
  17.   
  18.    try{   
  19.        if(__chkpazu) __chkpazu();   
  20.    }catch(ex){};   
  21.   
  22.    //创建一个函数__printElementById,这个函数是PAZU的printElementById方法的JS实现   
  23.    var __ep__last;   
  24.    function __printElementById(sID){   
  25.       if(__ep__last){   
  26.          try{   
  27.            __ep__last.className=__ep__last.getAttribute('oclass_pazu');   
  28.          }catch(ex){};   
  29.       }   
  30.       var id='div__pazu__';   
  31.       var e=document.getElementById(id);   
  32.       if(!e){   
  33.          e=document.createElement('DIV');   
  34.          e.id=id;   
  35.          e.style.cssText='overflow:visible;border:0;padding:0;margin:0;';   
  36.          document.body.appendChild(e);   
  37.       }   
  38.       try{   
  39.          document.getElementsByTagName('head')[0].removeChild('style__pazu__');   
  40.       }catch(ex){};   
  41.       var e__=document.createElement('STYLE');   
  42.       e__.id='style__pazu__';   
  43.       e__.setAttribute('type','text/css');   
  44.       e__.styleSheet.media='print';   
  45.       e__.styleSheet.cssText='body{background-color:white;}body > *{display:none;}#div__pazu__{background-color:white;}#div__pazu__,.p_p__{display:block;left:0;top:0;}';    
  46.   
  47.       var ep=document.getElementById(sID);   
  48.       if(ep.tagName=='IFRAME'){   
  49.         ep=window.frames[sID];   
  50.         var s='';   
  51.         var h=ep.document.styleSheets;   
  52.         for(i=0;i<h.length;i++){   
  53.           var r=h[i].rules;   
  54.           for(j=0;j<r.length;j++){   
  55.              var t=(' '+r[j].selectorText+' ').replace(' body ',' #'+id+' ').replace(/(^\s*)|(\s*$)/g,'');   
  56.              if(t.indexOf(id)!=1){t='#'+id+' '+t;}   
  57.              s=s+t+'{'+r[j].style.cssText+'}';   
  58.           }   
  59.         }   
  60.         e__.styleSheet.media='print';   
  61.         e__.styleSheet.cssText+=s;   
  62.         e.innerHTML=ep.document.body.innerHTML;   
  63.       }else{   
  64.         e.innerHTML='';   
  65.         var n=ep.className;   
  66.         if(!n)n='';   
  67.         ep.setAttribute('oclass_pazu',n);   
  68.         ep.className=n+' p_p__';   
  69.         __ep__last=ep;   
  70.      }   
  71.      try{   
  72.         document.getElementsByTagName('head')[0].appendChild(e__);   
  73.      }catch(ex){};   
  74.   
  75. }   
  76. //  
文档中心