如何在Chrome中访问打印窗口的HTML元素?
问题:如何用常规JS访问Chrome打印独立窗口的HTML元素
我想实现网页打印功能,但原生print()方法满足不了需求——它只能打开浏览器打印窗口,没法直接完成打印操作,同时我还希望能控制打印选项(比如打印为PDF或指定尺寸)。
我在打开打印窗口后,用Chrome开发者工具复制了保存按钮的JS路径,然后在目标网页里写了这段代码:
print() document.querySelector("body > print-preview-app").shadowRoot.querySelector("#sidebar").shadowRoot.querySelector("print-preview-button-strip").shadowRoot.querySelector("div > cr-button .action-button").click()
但运行后报错了,因为这些元素根本不在当前网页里,而是在打印窗口内。实际上这个打印窗口是个独立页面(chrome://print/),只是和当前打印页面有关联。
我的核心问题是:这种情况下,怎么在这个独立窗口里运行JS来访问它的HTML元素?
需要说明的是,我的问题和插件访问chrome://页面的限制问题完全不同,我写的是常规脚本(非插件),理论上可以访问这类页面,现在的问题只是打印窗口不是当前网页的一部分,是独立显示的。我要解决的就是如何访问当前页面以外的另一页面的HTML元素,插件方案和常规脚本方案完全是两回事,我不想用插件。
附记:
- 或许可以直接调用Chrome打印相关的JS,但这不是我现在关注的重点,我还是想解决如何访问上述HTML元素的问题。
- 我见过类似的问题,但没找到答案。
内容的提问来源于stack exchange,提问作者shalomOlam
相关产品推荐
相关产品推荐

