JS打印 IE浏览器

//&w 网页标题
//&u 网页地址 (URL)
//&d 短日期格式(由“控制面板”中的“区域设置”指定)
//&D 长日期格式(由“控制面板”中的“区域设置”指定)
//&t 由“控制面板”中的“区域设置”指定的时间格式
//&T 24 小时时间格式
//&p 当前页码
//&P 总页数      
//&b 文本右对齐(请把要右对齐的文字放在“&b”之后)
//&b&b 文字居中(请把要居中的文字放在“&b”和“&b” 之间)
//&& 单个 & 号 (&)
//调用IE自带的打印功能时,在需要分页的加样式
//style="page-break-before:always;"

解决方案一:
<HTML><HEAD>
<script language="JavaScript">
var hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="\\Software\\Microsoft\\Internet Explorer\\PageSetup\\"
//设置网页打印的页眉页脚为空
function pagesetup_null()
{
  try{
    var RegWsh = new ActiveXObject("WScript.Shell")
    hkey_key="header"    
    RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"")
    hkey_key="footer"
    RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"")
  }catch(e){}
}
//设置网页打印的页眉页脚为默认值
function pagesetup_default()
{
  try{
    var RegWsh = new ActiveXObject("WScript.Shell")
    hkey_key="header"    
    RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"&w&b页码,&p/&P")
    hkey_key="footer"
    RegWsh.RegWrite(hkey_root+hkey_path+hkey_key,"&u&b&d")
  }catch(e){}
}
</script>
</HEAD>

<BODY><br/><br/><br/><br/><br/><br/><p align=center>
<input type="button" value="清空页码" onclick=pagesetup_null()>
<input type="button" value="恢复页码" onclick=pagesetup_default()><br/>
</p></BODY></HTML>
需要将ie安全级别降低,否则创建ActiveXObject对象时会报错。
解决方案二:
使用第三方免费控件
<head>
<title>打印确认</title>
<style media="print">
.noprint { display: none }
</style>
</head>
<body>
<object id="factory" style="display:none" viewastext classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" codebase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"></object>
<script defer>
function window.onload() {
  //factory.printing.paperSize = "A3"
  factory.printing.header = ""
  factory.printing.footer = ""
  factory.printing.portrait = false
  idPrint1.disabled = false; // enable UI button
  idPrint2.disabled = false;
  idPrint3.disabled = false;
  idPrint4.disabled = false;
  factory.printing.leftMargin = 0.75
  factory.printing.topMargin = 1.5
  factory.printing.rightMargin = 0.75
  factory.printing.bottomMargin = 1.5
  }
</script>
<div class=noprint>
  <input id="idPrint1" type="button" value="打印本页"
 onclick="factory.printing.Print(false)">
  <input id="idPrint2" type="button" value="页面设置"
 onclick="factory.printing.PageSetup()">
  <input id="idPrint3" type="button" value="打印预览"
 onclick="factory.printing.Preview()">
  <input id="idPrint4" type="button"
 onclick="window.close()" value="关闭窗口">
</div>
<br/>
<table width="720" border="0" cellspacing="0" cellpadding="0" align="center" >
  <tr> 
    <td  bgcolor="#0099ff">
   这里是你要打印的内容,上面的按钮不会被打印出来<br/>
   factory.printing.paperSize = "A3"
   </td>
</tr></table></body>
要降低ie的安全级别。

两种方案的缺点都是要降低ie的安全级别,如果不想降低,就不能在代码中实现,而要象上面一样手动更改了。

var hkey_root, hkey_path, hkey_key;

hkey_root = "HKEY_CURRENT_USER";

hkey_path = "\\Software\\Microsoft\\Internet Explorer\\";

//设置网页打印的页眉页脚为空

function pagesetup_null() {

    try {

        var RegWsh = new ActiveXObject("WScript.Shell");

        hkey_key = "PageSetup\\header";

        RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");

        hkey_key = "PageSetup\\footer";

        RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "");

    } catch (e) { }

}

//设置网页打印的页眉页脚为默认值

function pagesetup_default(){

    try{

        var RegWsh = new ActiveXObject("WScript.Shell");

        hkey_key = "PageSetup\\header";

        RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "&w&b页码,&p/&P");

        hkey_key = "PageSetup\\footer";

        RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "&u&b&d");

    }catch(e){}

}

//设置打印背景颜色和图像

function pagesetup_default() {

    try {

        var RegWsh = new ActiveXObject("WScript.Shell");

        hkey_key = "Main\\Print_Background";

        RegWsh.RegWrite(hkey_root + hkey_path + hkey_key, "yes");

    } catch (e) { }

}



//打印

window.onload = function () {

    var printArea = window.opener.document.getElementById("printArea");

    window.document.getElementById("content").innerHTML = printArea.outerHTML;

    window.focus();

    window.print();

    window.close();

}

 

 

你可能感兴趣的:(js打印)