网页中控制打印页面的特定部分

    技术2022-05-11  56

    通过将需要打印的特定部分另建一个页面,然后装入主页面的一个IFrame中,再调用IFrame的打印方法,只打印IFrame中的内容实现的。

    <iframe style="visibility: visible" name="FrameId" width="100%" height="30%"

    src="NeedPrintedPage.asp"></iframe>

      下面的pringFrame  js函数将只打印Iframe中的内容,可以直接引用使用,如printFrame(FrameId);

    window.print = printFrame;  // main stuff function printFrame(frame, onfinish) {   if ( !frame ) frame = window;   function execOnFinish() {     switch ( typeof(onfinish) ) {       case "string": execScript(onfinish); break;       case "function": onfinish();     }     if ( focused && !focused.disabled ) focused.focus();   }   if (( frame.document.readyState !== "complete") &&( !frame.document.confirm("The document to print is not downloaded yet! Continue with printing?") ))   {     execOnFinish();     return;   }

      var eventScope = printGetEventScope(frame);   var focused = document.activeElement;     window.printHelper = function() {     execScript("on error resume next: printWB.ExecWB 6, 1", "VBScript");     printFireEvent(frame, eventScope, "onafterprint");     printWB.outerHTML = "";     execOnFinish();     window.printHelper = null;   }     document.body.insertAdjacentHTML("beforeEnd",     "<object id=/"printWB/" width=0 height=0 /     classid=/"clsid:8856F961-340A-11D0-A96B-00C04FD705A2/">");     printFireEvent(frame, eventScope, "onbeforeprint");   frame.focus();   window.printHelper = printHelper;   setTimeout("window.printHelper()", 0); }

    // helpers function printIsNativeSupport() {   var agent = window.navigator.userAgent;   var i = agent.indexOf("MSIE ")+5;   return parseInt(agent.substr(i)) >= 5 && agent.indexOf("5.0b1") < 0; } function printFireEvent(frame, obj, name) {   var handler = obj[name];   switch ( typeof(handler) ) {     case "string": frame.execScript(handler); break;     case "function": handler();   } } function printGetEventScope(frame) {   var frameset = frame.document.all.tags("FRAMESET");   if ( frameset.length ) return frameset[0];   return frame.document.body; }

     

    最新回复(0)