JS非阻塞打印

时间:2019-09-19 12:27:15

标签: javascript

我有一个可以打印某些内容的应用程序。为此,我要打开一个新窗口并在其中插入一些布局。

// function body

const printWin = window.open('');

printWin.document.body.appendChild(el);

printWin.focus();
printWin.print();
printWin.close();

问题是单位打印窗口关闭,应用程序被完全阻止(因为它是同步执行的)。

我试图做

printWin.addEventListener('DOMContentLoaded', () => {
  printWin.focus();
  printWin.print();
  printWin.close();
})

但是,此事件似乎没有被触发。如何在不引起执行阻塞的情况下打印并立即关闭窗口?

1 个答案:

答案 0 :(得分:1)

我刚刚尝试了您所说的内容(Firefox 69.0- Ubuntu),并且没有阻止javascript(事件循环):

我使用了正在使用的Web应用,可以通过websocket将数据推送到该应用(已显示)。

被阻止的是浏览器的用户输入,因为Firefox迫使您进入打印对话框(以确认或取消任务)。

但是javascript照常工作。只是您不会收到任何鼠标或键盘事件,因为您暂时与它们断开了连接。