Javascript 是否从页面禁用浏览器打印选项(页眉、页脚、页边距)?
我在SO和其他几个网站上看到过这个问题以几种不同的方式被问到,但大多数问题要么过于具体,要么已经过时。我希望有人能在这里提供一个明确的答案,而不是迎合猜测 当有人在浏览器中打印时,是否有一种使用CSS或javascript更改默认打印机设置的方法?当然,“从他们的浏览器打印”是指某种形式的HTML,而不是PDF或其他依赖于插件的mime类型 请注意: 如果某些浏览器提供这种功能,而其他浏览器不提供(或者如果您只知道如何为某些浏览器提供这种功能),我欢迎特定于浏览器的解决方案 类似地,如果您知道某个主流浏览器对这样做有特定的限制,这也很有帮助,但是一些相当最新的文档将不胜感激。(当XYZ在过去三年中对所述策略进行了重大更改时,简单地说“这违反了XYZ的安全策略”是不太令人信服的) 最后,当我说“更改默认打印设置”时,我并不是指永远,只是指我的页面,我指的是打印页边距、页眉和页脚 我很清楚CSS提供了改变页面方向和页面边距的选项。其中一个难题就是Firefox。如果我将页边距设置为1英寸,它会将其添加到已放置的半英寸Javascript 是否从页面禁用浏览器打印选项(页眉、页脚、页边距)?,javascript,html,css,browser,printing,Javascript,Html,Css,Browser,Printing,我在SO和其他几个网站上看到过这个问题以几种不同的方式被问到,但大多数问题要么过于具体,要么已经过时。我希望有人能在这里提供一个明确的答案,而不是迎合猜测 当有人在浏览器中打印时,是否有一种使用CSS或javascript更改默认打印机设置的方法?当然,“从他们的浏览器打印”是指某种形式的HTML,而不是PDF或其他依赖于插件的mime类型 请注意: 如果某些浏览器提供这种功能,而其他浏览器不提供(或者如果您只知道如何为某些浏览器提供这种功能),我欢迎特定于浏览器的解决方案 类似地,如果您知道某
我非常想减少客户网站上PDF的使用,但侵犯演示文稿(以及缺乏可靠性)是他们最关心的问题。因为您提到了“在他们的浏览器内”和firefox,如果您使用的是Internet Explorer,您可以通过临时设置注册表中的值来禁用页眉/页脚,请参见示例。抱歉,我还没有听说过在其他浏览器中实现这一点的方法。Daniel和Mickel的答案似乎相互冲突,我想在firefox的注册表中可能有类似的设置来删除页眉/页脚或自定义它们。您签出了吗?CSS标准支持一些高级格式。CSS中有一个
@page
指令,可以启用某些仅适用于分页媒体(如纸张)的格式。看
缺点是不同浏览器中的行为不一致。Safari仍然完全不支持设置打印机页边距,但所有其他主流浏览器现在都支持它
使用@page
指令,可以指定页面的打印机边距(与HTML元素的常规CSS边距不同):
打印测试
@页面
{
大小:auto;/*auto是初始值*/
边距:0mm;/*这会影响打印机设置中的边距*/
}
html
{
背景色:#FFFFFF;
边距:0px;/*这会影响发送到打印机之前html上的边距*/
}
身体
{
边框:纯色1px蓝色;
边距:10mm 15mm 10mm 15mm;/*内容所需的边距*/
}
顶线
第2行
请注意,我们在这里基本上禁用了页面特定的页边距,以达到删除页眉和页脚的效果,因此我们在正文上设置的页边距不会用于分页符(因为),这意味着只有当打印内容只有一页时,它才能正常工作
这在Firefox 3.6、IE 7、Safari 5.1.7或Google Chrome 4.1中不起作用
设置@page边距在IE 8、Opera 10、谷歌Chrome 21和Firefox 19中确实有效尽管这些浏览器中的页面边距设置正确,但在试图解决页眉/页脚隐藏问题时,这种行为并不理想 以下是它在不同浏览器中的行为:
- 在Internet Explorer中,在本次打印的设置中,边距实际上设置为0毫米,如果进行预览,默认边距为0毫米,但用户可以在预览中更改边距。
您将看到页面内容实际上已正确定位,但浏览器打印页眉和页脚显示为不透明背景,因此有效地将页面内容隐藏在该位置 - 在Firefox较新版本中,它的位置正确,但同时显示页眉/页脚文本和内容文本,因此它看起来像是浏览器页眉文本和页面内容的糟糕组合
- 在Opera中,当在标准css中使用不透明背景时,页面内容会隐藏页眉,并且页眉/页脚位置与内容冲突。很好,但如果边距设置为一个小值,导致页眉部分可见,则看起来很奇怪。此外,页边距设置不正确
- 在Chrome较新版本中,如果@page边距设置得太小以致页眉/页脚位置与内容冲突,则浏览器页眉和页脚将隐藏。在我看来,这正是它应该表现出来的
因此,结论是Chrome在隐藏页眉/页脚方面具有最好的实现。我收到一个客户的类似请求,他希望删除页眉、页码和html页脚。在本例中,客户机呈现的HTML页面可以兼作正式证书。添加的URL、页面和标题是不相关的,会导致最终产品不太令人满意。在某些方面,它看起来很便宜 Media=Print无法禁用这些浏览器默认设置。唯一的解决方法是告诉用户单击“齿轮”按钮并打开/关闭这些项目。说真的,20年来我都不知道我能做到这一点(我们认为
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Print Test</title>
<style type="text/css" media="print">
@page
{
size: auto; /* auto is the initial value */
margin: 0mm; /* this affects the margin in the printer settings */
}
html
{
background-color: #FFFFFF;
margin: 0px; /* this affects the margin on the html before sending to printer */
}
body
{
border: solid 1px blue ;
margin: 10mm 15mm 10mm 15mm; /* margin you want for the content */
}
</style>
</head>
<body>
<div>Top line</div>
<div>Line 2</div>
</body>
</html>
#BrowserPrintDefaults{display:none}
<head>
<style media="print">
@page
{
size: auto; /* auto is the initial value */
margin: 0mm; /* this affects the margin in the printer settings */
}
body
{
background-color:#FFFFFF;
border: solid 1px black ;
margin: 0px; /* this affects the margin on the content before sending to printer */
}
</style>
</head>
<head>
<style type="text/css">
@page{
size: auto A4 landscape;
margin: 3mm;
}
</style>
</head>
<head>
<style type="text/css">
@page{
size: auto;
margin: 3mm;
}
</style>
</head>
<style media="print">
@page {
size: auto;
margin: 0;
}
</style>
@page
{
size: auto; /* auto is the initial value */
margin: 0mm; /* this affects the margin in the printer settings */
}
html
{
background-color: #FFFFFF;
margin: 0mm; /* this affects the margin on the html before sending to printer */
}
body
{
padding:30px; /* margin you want for the content */
}