【发布时间】:2012-02-08 01:30:40
【问题描述】:
我有一个网站,用户可以在该网站上单击阅读更多按钮,以便他们可以查看页面上的其余信息。我很好奇如何做到这一点,以便用户不必单独打印每一页。我希望能够做到这一点,以便我可以拥有一个打印相关页面的脚本。如果有人可以帮助我并指出正确的方向,我将不胜感激。我需要这个功能才能在所有浏览器中工作。
谢谢
【问题讨论】:
-
将“阅读更多按钮”替换为浏览器内置的滚动条。
标签: javascript
我有一个网站,用户可以在该网站上单击阅读更多按钮,以便他们可以查看页面上的其余信息。我很好奇如何做到这一点,以便用户不必单独打印每一页。我希望能够做到这一点,以便我可以拥有一个打印相关页面的脚本。如果有人可以帮助我并指出正确的方向,我将不胜感激。我需要这个功能才能在所有浏览器中工作。
谢谢
【问题讨论】:
标签: javascript
您需要一个利用媒体样式的样式表来实现这一点。它基本上就像有两个单独的样式表;一个用于打印,一个用于查看。为了保持带宽保守,将printarea 留空,直到发出请求。在请求事件中填写printarea 与您要做的整个打印。我建议你研究一下 jQuery 以及他们对此的加载和 ajax 请求。
@media screen
{
#screenarea
{
display: block;
}
#printarea
{
display: none;
}
}
@media print
{
#screenarea
{
display: none;
}
#printarea
{
display: block;
}
}
【讨论】:
在单个网页中包含所有内容后(使用注入或服务器进程),格式化页面使用 CSS 属性进行@media 打印,例如:
@media print {
h1 {page-break-before: always;}
}
其他属性是“page-break-after”和“page-break-inside”,后者有助于避免内容中断。
【讨论】:
我的直觉首先告诉我它需要一个基于服务器的解决方案,因为window.print 函数只打印当前文档中的内容,并且您应该编写服务器代码来生成一个包含所有您要打印的页面,然后从该页面调用window.print。
但是你可以让jQuery为你工作,使用.load函数下载要打印的页面,然后在所有页面加载后,调用window.print。如果由于某种原因你不能使用 jQuery,你可以使用 XHR 自己编写整个管道。
如果没有有关您的网络应用程序结构的任何信息,很难提供更详细的答案。
【讨论】:
我认为你可以在层内的 iframe 上打印它
tihs 是一个例子(不是很好,但适用于这个想法):
【讨论】:
一般来说,您不会使用 JavaScript 访问多个页面并打印它们。 (如果可能的话,这听起来有点像黑客攻击。)
相反,您可能希望有一页包含所有要打印的信息,printability 的 CSS 样式,用户可以查看并能够打印。 (在这种情况下,您可以轻松地使用 JavaScript 来启动打印操作。)
也许是一个“全部打印”链接,将用户引导至包含所有打印信息的页面(或在新的target 中打开页面)?
您甚至可以更进一步,使其更具活力。可能在每个信息部分的标题旁边都有复选框和一个“打印所选”按钮,该按钮会将选择发布到服务器并仅将所选信息呈现到“全部打印”页面。
我只是觉得,作为用户,这将更多地遵守least astonishment,而不是打印我什至没有首先下载的东西(在这种情况下,您还会冒着向用户的打印机发送太多信息的风险并浪费他们的资源)。
编辑:
我刚刚想到的另一种方法。首先,所有内容是否都需要放在单独的页面上?也许只是将内容放在默认隐藏的divs 中,“阅读更多”链接显示关联的div。那么你所需要的可打印性就是前面提到的 CSS 媒体样式。在浏览器中查看时,他们可以单独展开/折叠信息部分,但在打印页面时,所有内容都会展开。
【讨论】: