2012-01-11 103 views
5

我有一个网站,用户点击阅读更多按钮,以便他们可以查看页面上其余的信息。我很好奇我是如何制作的,以便用户不必单独打印每个页面。我希望能够做到这一点,以便我可以有一个脚本来打印相关页面。如果有人能帮助我,并指出我正确的方向,将不胜感激。我需要这个功能在所有浏览器中工作。用Javascript打印多个页面

感谢

+2

用内置在浏览器中的滚动条代替“阅读更多按钮”。 – Quentin 2012-01-11 17:21:37

回答

3

您需要做的就是利用媒体样式的样式表。基本上就像有两个单独的样式表;一个用于打印,一个用于查看。为了带宽保守,在请求发生之前将printarea保留为空。在请求事件中填写printarea以及您要做的全部打印。我建议你看看jQuery及其负载和Ajax请求。

@media screen 
    { 
    #screenarea 
     { 
     display: block; 
     } 
    #printarea 
     { 
     display: none; 
     } 
    } 
@media print 
    { 
    #screenarea 
     { 
     display: none; 
     } 
    #printarea 
     { 
     display: block; 
     } 
    } 
0

我的直觉先告诉我,它需要一个基于服务器的解决方案,因为window.print功能只打印什么是当前文档中,并且你应该写服务器代码生成网页包含您想要打印的所有页面,并从该页面调用window.print

但是,您可以让jQuery为您工作,使用.load函数下载要打印的页面,然后在所有页面加载后调用window.print。如果由于某种原因无法使用jQuery,则可以使用XHR自己编写整个管道。

很难提供更详细的答案,而没有任何有关您的Web应用程序结构的信息。

0

在一般情况下,您不会使用JavaScript访问多个页面并进行打印。 (如果它甚至可能,这听起来像是有点破解)。

相反,你可能想要一个页面包含所有要打印的信息,CSS样式为printability,用户将查看并能够打印。 (在这种情况下,您可以轻松使用JavaScript来启动打印操作。)

也许是一个“打印全部”链接,它将用户引导到一个页面(或打开一个页面,其中包含所有信息)打印?

你甚至可以更进一步,让它更具动感。也许在每个信息部分的标题旁边都有复选框,还有一个“打印选定”按钮,它可以将所选内容发布到服务器,并仅将所选信息呈现到“全部打印”页面。

我只是觉得,作为一个用户,它会坚持更多的least astonishment比打印的东西,我甚至没有下载的东西在第一个地方(你也冒着发送太多的风险,用户的打印机和浪费他们的资源)。

编辑

另一个刚刚发生,我的做法。所有的内容都需要放在不同的页面上吗?也许只是将内容默认隐藏在div中,并且“read more”链接显示关联的div。然后,所有您需要的可印刷性就是前面提到的CSS媒体风格。在浏览器中查看时,他们可以单独展开/折叠信息部分,但是当打印页面时,所有内容都会展开。

0

你在一个单一的网页的所有内容(使用注射或服务器进程),格式化网页用来@media打印CSS属性,如后:

@media print { 
    h1 {page-break-before: always;} 
} 

其他属性“页面级中断“和”页面中断“,后者有助于避免内容中断。