65.9K
CodeProject 正在变化。 阅读更多。
Home

Javascript 自定义部件打印预览

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.20/5 (3投票s)

2007年12月30日

CPOL

2分钟阅读

viewsIcon

61501

downloadIcon

621

一个 JavaScript 模块,允许开发人员选择变体的部分或整个页面,以便用户可以预览和打印它。

自定义部分打印器 它是一个 JavaScript 模块,允许开发人员选择变体的部分或整个页面,以便用户可以预览和打印它。

HTML 元素接受自定义属性。页面上任何需要打印的部分,都用带有自定义属性“Printable”的 div 元素包围。

打印预览会弹出一个窗口,其中包含一个打印按钮,如果用户喜欢,可以打印它。

 

主要脚本函数是

DoPrintableSections(wdth,hght,stylesheets,imgsdir)

其中 wdth 和 hght 分别是弹出窗口的宽度和高度。

Stylesheets 是一个字符串,包含应用于预览页面的样式表文件,用分号分隔。

Imgsdir 是图像目录,其中包含打印预览过程中需要的图像,例如单选按钮替换为图像。

让我们深入了解主函数,看看它是如何工作的。

 

function DoPrintableSections(wdth,hght,stylesheets,imgsdir)

{

(*) CreateVirtualCarrier("ContentCarrier");

(*)var e = document.getElementsByTagName("div");

var content = "";

for(var i=0;i<e.length;i++){

   (*)  if(e[i].printable == "Print"){

        var cc = document.getElementById("ContentCarrier");

        cc.innerHTML = e[i].innerHTML;

   (*)  ClearInputs(cc,"INPUT",imgsdir);

        ClearInputs(cc,"select");

        ClearInputs(cc,"TEXTAREA");

   (*)  content = content + "<br/>" + cc.innerHTML ; 

    }   

}

(*)OpenPreviewPage(content,wdth,hght,stylesheets,imgsdir);

(*)cc.innerHTML="";

}

 

(*)此函数处理的第一件事是创建一个虚拟载体,它只是我们在 HTML 文档中添加的一个 div,以便可以使用浏览器的 DOM 来分别处理每个自定义 HTML 部分,并通过魔术方法 innerHTML 获取新处理的 HTML 作为字符串。

function CreateVirtualCarrier(carriername){

    var vc = document.createElement('<div id="'+ carriername +'" style="width:600; height:200"></div>');

    document.body.appendChild(vc);

}

 

(*)然后,我们使用 getElementsByTagName() 获取所有 HTML div 元素,这提供了遍历 DOM 中所有元素的最有效方法。

 

(*)之后,对返回的元素数组进行循环,并检查它是否被标记为可打印。我们复制被标记为可打印的 div 的 HTML 内容到虚拟载体,然后开始处理它。

 

处理过程来自 Clears 函数,这些函数通过检查元素类型来替换或删除元素。我们使用两个主要步骤来完成这项工作:

1-      Currentelement.parentNode.insertBefore 

2-     Currentelement.removeNode(true)

 

 

最后,我们将收集生成的 HTML 放入一个新的弹出窗口中,用户将在其中看到它。





© . All rights reserved.