0

我想编写打印网页的代码。print()是不够的,因为它只打开浏览器的打印窗口,不会立即打印。此外,我还对控制打印选项感兴趣(例如打印为PDF或特定大小)。

因此,我打开了Chrome的开发工具,打开了打印窗口,复制了保存按钮的js路径,并尝试在我想打印的网页中编写以下代码:

打印()document.querySelector(“body>print-preview-app”).shadowRoot.query选择器(“#sidebar”).shodowRot.querySelecter(“print-preeview-bbutton-strip”).sshadowRoot.querySelector(“div>cr-button.action-button”)click()

我收到一个错误,因为这个元素没有出现在页面上,而是出现在打印窗口中。事实证明,窗口实际上是一个单独的页面(铬://打印/),但在某种程度上,它嵌入到打印页面中,或者看起来与它无关。

我的问题是,在这种情况下,如何在窗口上运行JS?

我的问题与这个问题。问题是关于插件的,问题是访问chrome://页面,因为它们是这样的,而浏览器不允许访问它们。但我正在编写一个常规脚本(不是插件),因此它总是可以访问这些页面。我的问题是,打印窗口不是网站页面的一部分,而是单独显示的。

我将再次澄清。我遇到的问题是访问当前页面以外的页面的HTML。使用插件在技术上应该是可行的,但浏览器会阻止它不同的从如何使用正则脚本的问题开始。

发布脚本。1.也许也可以直接使用Chrome打印的JS,但目前它与我无关。问题是如何访问上述HTML元素。

  1. 我见过类似的问题(像这个). 我没有看到任何答案。
6
  • 1
    全部铬:URL具有特权,如果不禁用某些浏览器安全设置,JavaScript(甚至扩展)就无法访问URL。 评论 2023年4月16日17:25
  • 在提交问题之前,我应该确认这些帖子都没有回答我的问题。他们没有回答。 评论 2023年4月17日13:47
  • 1
    "…正在访问chrome://页面。。。但我正在写一个常规脚本(不是插件),因此它总是可以访问这些页面“:很遗憾,这不正确-请参阅同源政策 评论 2023年4月17日14:13
  • 我可能不太准确。在任何情况下,都可以直接访问打印窗口。试试看。不要相信我的话。 评论 2023年4月17日14:46

1答案1

重置为默认值
1

我很难过地告诉你,这是不可能的。另一方面,您可以始终使用警报JS库(如sweetalert2),然后只需编辑警报div的内部HTML。

首先,在HTML中包含sweetalert2脚本<script src=“https://cdn.jsdeliver.net/npm/sweetalert2@11“></script>.

然后,编写一个创建弹出窗口的函数

函数showAlert(){Swal.fire公司(“干得好!”,“你点击了按钮!”,“成功”)

获取popup元素并编辑它的innerHTML

document.getElementsByClassName(“swal2-popup”)[0].innerHTML=“在此处编写弹出窗口的HTML。”;

并结束函数

`}`

函数showAlert(){Swal.fire公司(“干得好!”,“你点击了按钮!”,“成功”)document.getElementsByClassName(“swal2-popup”)[0].innerHTML=“您好,这是一个带有按钮的警报。”;}
<script src=“https://cdn.jsdeliver.net/npm/sweetalert2@11“></script><body><p>嗨,这是一些无用的文字。Lorem ipsum dolor sit amet consectetur adipiscing elit praesent、maecenas felis aenean sapien vulputate sed porttitor habiatsse auctor、henderrit eros nibh ligula mollis ornatis venenatis。Taciti arcu dapibus aliquam simpous nostra posuere velit、facilisi aenean morbi vehicula curus nullam sapien potential、tristique pulvinar nulla fames auctor rutrum。Faucibus torrent dui interdum quisque nisi nam maecenas duis,mauris eget class euismod integer curae ultricies,tempora sem felis varius sapien nunc cum</p> 显示警报</body>

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.