javascript – window.print()从Chrome子窗口 – 关闭,然后中断

在我们的webapp中,通过window.open()用户单击target =“_ blank”的链接启动Chrome子窗口,然后在该子窗口中,body onload =“window.print()”自动启动打印对话框和打印预览,然后用户关闭打印/子窗口,而不是单击取消,父窗口完全停止.特别:

>没有javascript事件将触发
>没有链接可点击
>点击F5会在选项卡中显示一点微调,但页面永远不会重新加载.
父窗口真的死了 – 你可以做的只是关闭它.

如果您在子窗口(其中通过window.print()启动打印预览)中单击取消,一切都很好.但如果用户关闭窗口,所有的疯狂都会发生.

这是Chrome中已知的错误

> bug 1
> bug 2
> bug 3

有人知道一个解决办法吗?

解决方法

而不是使用window.print(),只需将您的内容带到新窗口,然后调用下面给出的打印功能来打印内容.

以下是一个函数调用,我们通过它的id将元素的内部html传递给新窗口.

PrintContent(document.getElementById('div-content-id').innerHTML);

function PrintContent(printableContent) {
    var printwindow = window.open("","Print_Content",'scrollbars=1,width=900,height=900top=' + (screen.height - 700) / 2 + ',left=' + (screen.width - 700) / 2);
    printwindow.document.write(printableContent);
    printwindow.document.close();
    printwindow.focus();
    printwindow.print();
    printwindow.close();
    return false;
}

我也面临着同样的问题,它对我有用.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...