js打印完毕后关闭窗口

项目中有一个需求,在一个页面上点击一个按钮,弹出一个数据页面,并自动打印预览该数据页面,关闭打印预览窗口或打印后,自动关闭该数据页面。打印用的是浏览器的打印组件IEWebBrowser,IEWebBrowser的相关用法如下:

<OBJECT classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 id=wb width=0></OBJECT>
<input name=Button onClick=wb.ExecWB(1,1) type=button value=打开>
<input name=Button onClick=wb.ExecWB(2,1) type=button value=关闭所有>
<input name=Button onClick=wb.ExecWB(4,1) type=button value=另存为>
<input name=Button onClick=wb.ExecWB(6,1) type=button value=打印>
<input name=Button onClick=wb.ExecWB(6,6) type=button value=直接打印>
<input name=Button onClick=wb.ExecWB(7,1) type=button value=打印预览>
<input name=Button onClick=wb.ExecWB(8,1) type=button value=页面设置>
<input name=Button onClick=wb.ExecWB(10,1) type=button value=属性>
<input name=Button onClick=wb.ExecWB(17,1) type=button value=全选>
<input name=Button onClick=wb.ExecWB(22,1) type=button value=刷新>
<input name=Button onClick=wb.ExecWB(45,1) type=button value=关闭>


项目的客户端环境有IE6和IE7两个版本,为了能实现上述功能,在数据页面加载完成后,执行WebBrowser的打印预览方法,弹出打印预览窗口。

window.wb.execwb(7,1);// 打印预览页面

但关闭打印预览窗口后数据页面不能自动关闭,只能通过手动关闭,为了能够实现打印完自动关闭,在上述代码中执行完打印后再执行关闭方法

window.wb.execwb(7,1);// 打印预览页面
window.wb.execwb(45,1);// 关闭

经测试这样不行,在打开打印预览窗口就会报错,原因可能是因为window.wb.execwb(7,1);执行打印预览时,还没完全打开,就已经执行了window.wb.execwb(45,1);将数据页面关闭,导致打印预览需要数据无法取得出错。既然关的太快,就想到能不能通过延迟关闭页面的方法让打印预览有足够的时间完成预览。上面代码改为

window.wb.execwb(7,1);// 打印预览页面
setTimeout("function(){window.wb.execwb(45,1);// 关闭}",5000);//5秒后关闭页面


修改之后只能说很烂的完成了需要功能,项目历史原因也只能这样了。
测试时发现,在IE7下,只有当打印预览页面被关闭后,setTimeout的语句才起作用,而IE6下,window.wb.execwb(7,1);执行完,setTimeout就会被执行就起作用了,这样的话IE7下,就不用设置延迟时间,直接关闭就可以了。继续改:
1.增加一个判断浏览器版本的方法,网上找了找,采用下面方法,很好用
引用博客:[url]http://www.cnblogs.com/leadzen/archive/2008/09/06/1285764.html[/url]

/**
* 获取IE版本
*/
function getIEVersion() {
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;

return Sys.ie;
}

这个方法可以识别ie,firefox,chrome,opera,safari等浏览器及版本。如果要判断是什么浏览器,这样判断

1.是否是IE
if(Sys.ie) {//是否是IE
}
2.什么版本
alert(Sys.ie);

因为我们的客户端只考虑IE6,7两个版本,再次修改后,上面的代码为

var ieVersion = getIEVersion();
window.wb.execwb(7,1);// 打印预览页面

if (ieVersion =="6.0") {
setTimeout("function(){window.wb.execwb(45,1);// 关闭}",5000);//5秒后关闭页面
} else if(ieVersion =="7.0") {
window.wb.execwb(45,1);// 关闭
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
窗口iframe表单提交后关闭窗口的方法是通过父窗口JavaScript代码来实现。可以使用以下步骤: 1. 在子窗口的表单中,添加一个提交事件的监听器,当表单提交时执行一段JavaScript代码。 2. 在提交事件的监听器中,使用`window.parent`来访问父窗口JavaScript代码。 3. 使用`window.parent`调用父窗口中的关闭窗口方法,例如`window.parent.closeWindow()`。 下面是一个示例代码: 在子窗口的HTML文件中: ``` <form id="myForm" action="submit.html" method="post"> <!-- form fields here --> <button type="submit">提交</button> </form> <script> document.getElementById('myForm').addEventListener('submit', function(e) { e.preventDefault(); // 阻止表单提交的默认行为 // 调用父窗口关闭窗口方法 window.parent.closeWindow(); }); </script> ``` 在父窗口JavaScript中: ``` function closeWindow() { // 关闭窗口 // 可以使用window.close()方法来关闭窗口,但是需要注意该方法在某些浏览器中可能会被禁用 // 为了更好的兼容性,可以使用以下方法: var iframe = document.getElementById('mainFrame'); iframe.parentNode.removeChild(iframe); } ``` 请注意,上述代码中的`mainFrame`是父窗口中iframe的id,你可能需要根据实际情况进行修改。另外,由于安全限制,关闭窗口的功能可能在某些浏览器中受到限制。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [javascript iframe编程相关代码](https://download.csdn.net/download/weixin_38632046/14816473)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [111 js iframe表单提交后自动关闭 &](https://blog.csdn.net/fancivez/article/details/49704945)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值