最近在做报表打印的时候,想偷懒一下,于是就将报表展示的页面里面的HTML全盘拷贝到另一个页面,然后直接调用windows的打印机,即(window.print方法)。
在实现过程中,出现了几个问题:
1、页面里面有后台传过来的JavaScript
2、页面中隐藏了一些DIV,DIV里面有一些iframe,它们会指向别的网页,并引用父页面的一些数据,但是因为当前展示的页面只拷贝了HTML,所以经常会报错
为了偷懒,于是写下了这些javascript的正则表达式
var reg=/<script language=[\"]?javascript[\"]?[^>]*>((.|\n|\t|\r)*?)<\/script>/gim;
说明:这个主要是去掉HTML中的JavaScript
var ifrReg = /< *?iframe[^>]*?(src *?= *?\"[^>]*?oss\/birt_report\/multiSelect.jsp[^>]*?\")[^>]*? *?>/gim;
说明:这个主要是查找那些特殊的iframe
var srcReg = /src *?= *?\"[^>]*?oss\/birt_report\/multiSelect.jsp[^>]*?\"/gim;
说明:这个主要是差早iframe里面的src
function replaceWord(word) { return word.replace(srcReg,"src=\"\""); } aDiv.innerHTML = bDiv.innerHTML.replace(reg,"").replace(ifrReg,replaceWord);
说明:替换
其实还有几个正则表达式,主要是想将HTML里面的隐藏的DIV挖出来,但是出现内存不足的提示,还是贴出来吧:
/]*?style *?= *?\"[^>]*?display *?: *?none *?;[^>]*?\" *?>/gim
说明:获取被隐藏的div标签
/]*?>((?!(]*?>))|\s)*?/gim
说明:查找成对的div标签,这里提示内存不足