如何在不获取“页面无响应”警告的情况下从javascript显示打印对话框?

时间:2019-02-26 22:19:10

标签: javascript html google-chrome

我有一个带有简单“打印”图像/链接的页面,该页面/链接执行简单的JavaScript onclick处理程序。我发现当我花很长时间检查打印对话框时,Chrome会抱怨该页面并显示“页面无响应”警告。在其他浏览器中看不到此行为。

HTML看起来像这样:

<a onclick="if(window.print) window.print(); return false;">
  <img src="print-button.png" alt="[Print]" />
</a>

页面上没有其他活动的脚本,因此我猜这是onclick处理程序的问题。我的猜测是Chrome在幕后执行的操作:

  1. 接受来自操作系统的点击事件
  2. 请参阅onclick处理程序存在
  3. 开始秒表
  4. 调用onclick处理程序
  5. onclick处理程序调用{​​{1}}(阻塞,等待用户输入)
  6. [时间流逝]
  7. 秒表表明时间已经过去
  8. Chrome向用户发出警告

如果这是真的,我会认为这是Chrome中的错误,因为window.print()调用不应“定时”进行。也就是说,这是一项阻止用户互动的操作,允许用户花费他们所需的时间。

我尝试通过以下方法作弊:

window.print

...但是它并没有改变任何东西-Chrome仍然抱怨脚本运行时间长。

我使用错误的技术来触发打印对话框吗?还是这是Chrome中的错误?

我在64位Mac上运行v72.0.3626.119,并且当我有一个客户端在64位Windows上运行相同版本时,我无法重现此问题

我正在报告此问题。< / p>

1 个答案:

答案 0 :(得分:2)

自2018年2月27日/ Chrome 64以来,这似乎是Chrome中的一个已知错误

有一个针对Chrome 73的修复程序

https://bugs.chromium.org/p/chromium/issues/detail?id=816869