Javascript 针对不同打印按钮的特殊打印样式,可在删除打印后使用

Javascript 针对不同打印按钮的特殊打印样式,可在删除打印后使用,javascript,html,css,printing,Javascript,Html,Css,Printing,我正在制作一个页面,页面底部有一个区域,列出了常见问题的分组,有几个不同的选项卡级别,然后是用户可以展开/折叠的问题。我们希望为用户提供一种能够很好地打印的方法 只是他们扩展的问题/答案 他们选择的子组中的所有问题/答案 他们选择的主要组中的所有问题/答案 页面上的所有问题/答案 计划是有一个下拉框,其中包含一个Javascript未隐藏的打印按钮,该按钮将应用一个类,当单击该类时,该类将隐藏页面上的其他内容,并为用户选择的选项提供所需的显示。这很容易做到,当禁用javascript时,我们可以

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

只是他们扩展的问题/答案 他们选择的子组中的所有问题/答案 他们选择的主要组中的所有问题/答案 页面上的所有问题/答案 计划是有一个下拉框,其中包含一个Javascript未隐藏的打印按钮,该按钮将应用一个类,当单击该类时,该类将隐藏页面上的其他内容,并为用户选择的选项提供所需的显示。这很容易做到,当禁用javascript时,我们可以应用默认打印样式,使用4作为全部内容,这可以通过正常的打印机制触发

问题是如何在打印完成时删除该特殊样式,以便用户在单击浏览器的“打印”按钮时,可以从整个页面中获得所需的打印内容,而不是最后选择的特殊打印视图

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

我们可以用一个指向另一个页面的链接来替换计划中的页面打印,该页面可以在不干扰页面其余内容的情况下自行格式化。我不喜欢这个想法,因为它会把页面分成几部分,如果可能的话,我总是喜欢让用户留在页面上。 我们可以设置一个超时,当点击打印按钮时,在一段时间后将页面恢复到默认状态,以删除我们的特殊类。我不喜欢这样,因为从用户的角度来看,它会产生不可预测的行为。如果他们在第一次打印时花了太长时间,他们就得不到想要的样式。如果他们在特殊打印后打印整页的速度过快,他们会得到一个奇怪的结果 我们可以在IE中使用打印后触发器来删除这些用户的样式,但据我所知,这个解决方案只是IE中的一个选项,让所有其他浏览器束手无策。 我们可以做一个一般性的假设,即用户不太可能来到页面上进行特殊格式的打印,然后希望打印整个页面,就这样放手了。
任何人都能想到的任何其他解决方案?

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

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

第一个解决方案肯定会起作用,我只是不喜欢整个弹出式打印方法。至于让显示与打印匹配,则无需这样做,因为打印介质类型为我提供了所需的所有灵活性。这就是打印样式表的用途,我认为我们不需要破坏任何正常的显示。如果我们做了一个弹出窗口,那么显示真实的打印视图是有意义的,而不是其他。