Chrome打包应用的打印支持

4

我似乎找不到任何关于Chrome打包应用程序支持window.print()的示例 - 请有人发布一个示例吗?

我正在使用这个

function clickHandler(e) {
  window.print();
}
document.addEventListener('DOMContentLoaded', function () {
  document.querySelector('button').addEventListener('click', clickHandler);
});

我尝试使用“Hello World!”示例平台应用程序,但似乎无法使其正常工作。

我是否需要使用特殊的权限设置?

谢谢!


作为一个合理性检查,页面上是否有任何JavaScript在工作?您能否将您的点击处理程序更改为console.log("works"); window.print();以确保吗? - apsillers
我猜弹出窗口(例如 window.print())被 Chrome 扩展程序阻止了,我尝试了一个示例但无法解决! - Sudarshan
1个回答

3

是的,window.print() 在 Chrome 应用程序中可以使用。您可以在官方示例库中找到一个示例。

只需在应用程序的任何 DOM 窗口中调用 window.print() 即可:

  // prints the content of the current window:
  window.print();

  // prints the content of another AppWindow:
  anotherAppWindow.contentWindow.print()

AppWindow是Chrome应用程序对象,它封装并扩展了具有应用程序功能的实际DOM窗口。可以通过以下方式获取此对象:

  1. 保存来自chrome.app.window.create回调的参数

  2. 在所需窗口的上下文中运行任何代码时,调用chrome.app.window.current()


我认为要使这个工作正常,文件必须由用户明确选择,或者必须位于先前由用户明确选择的目录中。使用应用程序内部的文件(chrome.storage.local)是行不通的,因为浏览器无法访问该文件。 - Marc Rochkind
是的,谢谢你提出这个问题。现在从Chrome应用程序中打印完美无缺!甚至还有一个示例:https://github.com/GoogleChrome/chrome-app-samples/tree/master/printing - mangini
如何进行静默打印? - Fandi Susanto
目前还不可能,@FandiSusanto,除非您直接使用chrome.usb或chrome.sockets API与打印机进行通信。 - mangini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接