适用于不同打印按钮的特殊打印样式,带有后续打印功能

时间:2011-05-05 15:47:54

标签: javascript html css printing

我正在开设一个页面,其底部有一个区域,其中列出了常见问题解答的分组,其中包含几个不同的标签级别,然后是用户可以展开/折叠的问题。我们希望为用户提供一种能够很好地打印的方法

  1. 只是他们扩展的问题/答案
  2. 他们选择的子组中的所有问题/答案
  3. 他们选择的主要群组中的所有问题/答案
  4. 页面上的所有问题/答案
  5. 计划是有一个下拉框,其中包含一个打印按钮(由Javascript取消隐藏),该按钮将应用一个类,该类在单击时会隐藏页面上的其他内容,并为用户选择的选项提供我们想要的显示。这很容易做到,我们可以使用#4作为一个全能的默认打印样式,当javascript被禁用时,可以通过普通的打印机制触发。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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