杰表技术论坛 's Archiver

admin 发表于 2016-2-26 15:06

在ie中,调用控件打印预览后,不能 window.close()的解决办法

有时,你需要通过 window.open() 来开启打印页面,打印结束后,让它关闭,但这里有一个问题,你调用控件的打印预览功能后,那个弹出页面无法再用 window.close()来关闭,怎么办?这里提供一个方法,就是将一个打印页面,嵌在弹出的那个页面的iframe中,如下所示:

closewindow-main.htm : 主控页面,[code]<input type="button" value="打印" onClick="window.open('closewindow-popup.htm')">[/code]closewindow-popup.htm : 被打开的页,里面嵌iframe,指向真正打印的页面[code]<iframe src="closewindow-papers.htm"></iframe>[/code]closewindow-papers.htm: 有打印按钮的页面,此处设置done回调,使控件打印结束后,自动关闭弹出页面[code]<html>
<head>
<script type="text/javascript" src="jatoolsPrinter.js"></script>
<script type="text/javascript">
function doprint(how) {
//打印文档对象
var myDoc = {

documents : document,
copyrights : '杰创软件拥有版权  www.jatools.com'
};

myDoc.done = function() {
closewindow();
}
var jatoolsPrinter = getJatoolsPrinter();
if (how.indexOf('打印预览') > -1)
jatoolsPrinter.printPreview(myDoc, false); // 打印前弹出打印设置对话框               
else
jatoolsPrinter.print(myDoc, false); // 不弹出对话框打印
}

function closewindow() {
parent.close();
}
</script>
</head>
<body>
<div id='page1' class='pagestyle'>文档第一页</div>
<div id='page2' class='pagestyle'>文档第二页</div>

<input type="button" value="打印预览" onClick="doprint('打印预览')">
<input type="button" value="打印后关闭窗口" onClick="doprint('打印')">
<input type="button" value="关闭窗口" onClick="closewindow()">
<!-- 插入打印控件 -->
<object id="ojatoolsPrinter"
codebase="jatoolsPrinter.cab#version=5,4,0,0"
classid="clsid:B43D3361-D075-4BE2-87FE-057188254255" width="0"
height="0">
<embed id="ejatoolsPrinter" type="application/x-vnd.jatoolsPrinter"
pluginspage="jatoolsPrinter.exe" width="0" height="0" />
</body>
</html>[/code]

admin 发表于 2016-2-26 15:08

下载本示例:

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.