针对不同打印按钮的特殊打印样式,具有印后删除功能

Special print style for different print buttons with after-print removal

本文关键字:打印 样式 删除 功能 按钮      更新时间:2023-09-26

我正在处理一个页面,该页面的底部将有一个区域,列出具有几个不同选项卡级别的常见问题解答分组,然后是可以由用户展开/折叠的问题。 我们希望为用户提供一种能够很好地打印的方法

  1. 只是他们扩展的问题/答案
  2. 他们选择的子组中的所有问题/答案
  3. 他们选择的主要组中的所有问题/答案
  4. 页面上的所有问题/答案

计划是有一个带有打印按钮(Javascript未隐藏)的下拉框,该下拉框将应用一个类,单击该类时将隐藏页面上的其他内容,并为我们提供用户所选选项所需的显示。 这一切都很容易做到,当禁用javascript时,我们可以使用#4应用默认打印样式作为捕获全部,这可以通过正常的打印机制触发。

问题是如何在打印完成后删除该特殊样式,以便如果用户要去单击浏览器打印按钮,他们会得到他们期望的整个页面的打印,而不是最后选择的"特殊"打印视图。

我已经想出了一些潜在的解决方案,但我对其中任何一个都不完全满意:

  1. 我们可以将我们计划的页面打印替换为指向另一个页面的链接,该页面在不干扰其余页面内容的情况下格式化自身。 我不喜欢这个想法,因为它将页面分解成碎片,如果可能的话,我总是更喜欢将用户留在页面上。
  2. 我们可以设置一个超时,当单击打印按钮以在一段时间后删除我们的特殊类,使页面恢复到默认状态。 我不喜欢这样,因为从用户的角度来看,它会产生不可预测的行为。 如果他们第一次打印"太长时间",他们就没有得到他们想要的风格。 如果他们在特殊打印后"太快"打印整个页面,他们会得到一个奇怪的结果
  3. 我们可以在 IE 中使用 after-print 触发器来删除这些用户的样式,但据我所知,这种解决方案只是 IE 中的一个选项,并使所有其他浏览器处于冷状态。
  4. 我们可以做一个一般的假设,即用户不太可能来到页面并进行特殊格式的打印,然后希望打印整个页面,然后
  5. 就这样。

还有其他解决方案可以想到吗?

如果你使用target="_blank",你的第一个解决方案实际上非常好。这将使用户保持在页面上,但避免所有其他问题。

但是,我认为如果您使页面布局与下拉列表匹配,整个问题就没有意义了。换句话说,如果他们正在查看第 2 节、第 3 小节、问题 1,并且他们选择"打印小节中的所有问题",只需展开小节并打开打印对话框。然后你只需要担心设置一个类(noprint)并将其应用于其他所有内容。