javascript 打印內(nèi)容方法小結(jié)
更新時間:2009年11月04日 23:58:47 作者:
關(guān)于JS打印問題!網(wǎng)上收集+自己總結(jié) ,需要的朋友可以參考下。
一般打印就用window.print();就OK了
但是一般都是選擇性打印所以會調(diào)用方法:
function preview()
{
bdhtml=window.document.body.innerHTML;
sprnstr="<!--startprint-->";
eprnstr="<!--endprint-->";
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
window.document.body.innerHTML=prnhtml;
window.print();
}
問題又來了~
會有頁腳和頁眉~還有橫向和縱向之分~
怎么辦?
最好就是用到打印預(yù)覽~
因?yàn)樗锩嬗性O(shè)置
這時必須引用IE的一個控件"WebBrowser"
在頁面里引用:
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
</object>
其控件方法:
WebBrowser.ExecWB(1,1) 打開
WebBrowser.ExecWB(2,1) 關(guān)閉現(xiàn)在所有的IE窗口,并打開一個新窗口
WebBrowser.ExecWB(4,1) 保存網(wǎng)頁
WebBrowser.ExecWB(6,1) 打印
WebBrowser.ExecWB(7,1) 打印預(yù)覽
WebBrowser.ExecWB(8,1) 打印頁面設(shè)置
WebBrowser.ExecWB(10,1) 查看頁面屬性
WebBrowser.ExecWB(15,1) 好像是撤銷,有待確認(rèn)
WebBrowser.ExecWB(17,1) 全選
WebBrowser.ExecWB(22,1) 刷新
WebBrowser.ExecWB(45,1) 關(guān)閉窗體無提示
示例:
<object id="WebBrowser" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
打印測試
<input type="button" onclick="WebBrowser.ExecWB(7,1)" value="打印預(yù)覽">
隨便用個文本文件復(fù)制粘貼~改后綴名~
ie運(yùn)行~點(diǎn)預(yù)覽~設(shè)置打印~打印~OK
然后再把其考到項(xiàng)目里~比如aspx里
同樣運(yùn)行,點(diǎn)預(yù)覽~
咦~怎么出現(xiàn)ie安全警告"internet explorer"已阻止此站點(diǎn)用不安全方式使用ActiveX控件"
這時就要改ie的安全設(shè)置了(如果沒裝補(bǔ)丁就沒事~那是你"rp"好,不一定客戶和其他的人的"rp"和你一樣好)
操作:
主菜單"工具"——Internet選項(xiàng)——安全——自定義級別, 將"安全設(shè)置"中"對沒有標(biāo)記為安全的ActiveX"控件進(jìn)行初始化和腳本運(yùn)行由"禁用"改為"啟用"
另一種方法,"工具" "Internet選項(xiàng)" "受信任的站點(diǎn)(可信站點(diǎn))""站點(diǎn)",然后填入網(wǎng)址即可,如果這個網(wǎng)站不是以https:連接的把下面"對該區(qū)域中的所有站點(diǎn)要求服務(wù)器驗(yàn)證(https:)"前面的勾去掉即可。
(如果是局域網(wǎng):那就是 "工具" "Internet選項(xiàng)" "本地Internet" "高級")
(無線網(wǎng)貌似不是局域網(wǎng)的)
推薦第二種~
萬事俱備~ok了~
打印方法集(沒有一一測試):
--------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT=""><script>
var hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="file://software//Microsoft//Internet Explorer\\PageSetup\\"
//設(shè)置網(wǎng)頁打印的頁眉頁腳為空
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){}
}
//設(shè)置網(wǎng)頁打印的頁眉頁腳為默認(rèn)值
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){}
}
function setdivhidden(id){//把指定id以外的層統(tǒng)統(tǒng)隱藏
var divs=document.getElementsByTagName("DIV");
for(var i=0;i<divs.length;i++)
{
if(divs.item(i).id!=id)
divs.item(i).style.display="none";
}
}
function setdivvisible(id){//把指定id以外的層統(tǒng)統(tǒng)顯示
var divs=document.getElementsByTagName("DIV");
for(var i=0;i<divs.length;i++)
{
if(divs.item(i).id!=id)
divs.item(i).style.display="block";
}
}
function printpr() //預(yù)覽函數(shù)
{
pagesetup_null();//預(yù)覽之前去掉頁眉,頁腳
setdivhidden("div1");//打印之前先隱藏不想打印輸出的元素
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);//在body標(biāo)簽內(nèi)加入html(WebBrowser activeX控件)
WebBrowser1.ExecWB(7, 1);//打印預(yù)覽
WebBrowser1.outerHTML = "";//從代碼中清除插入的html代碼
pagesetup_default();//預(yù)覽結(jié)束后頁眉頁腳恢復(fù)默認(rèn)值
setdivvisible("div1");//預(yù)覽結(jié)束后顯示按鈕
}
function print() //打印函數(shù)
{
pagesetup_null();//打印之前去掉頁眉,頁腳
setdivhidden("div1"); //打印之前先隱藏不想打印輸出的元素
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);//在body標(biāo)簽內(nèi)加入html(WebBrowser activeX控件)
WebBrowser1.ExecWB(6, 1);//打印
WebBrowser1.outerHTML = "";//從代碼中清除插入的html代碼
pagesetup_default();//打印結(jié)束后頁眉頁腳恢復(fù)默認(rèn)值
setdivvisible("div1");//打印結(jié)束后顯示按鈕
}
</script>
<body>
<div id=div0>
<input type=button value=打印預(yù)覽 onclick="printpr()">
<input type=button onClick="print()" value="打印">
表格一:
</div>
<div id=div1>
<table>
<tr><td>1111</td><td>1111</td><td>1111</td></tr>
<tr><td>1111</td><td>1111</td><td>1111</td></tr>
<tr><td>1111</td><td>1111</td><td>1111</td></tr>
</table>
</div>
</body>
</HTML>
----------------------------------------------------------------------------
JS實(shí)現(xiàn)局部打印和預(yù)覽:
第一種:
JS 實(shí)現(xiàn)簡單的頁面局部打印
function preview(oper)
{
if (oper < 10){
bdhtml=window.document.body.innerHTML;//獲取當(dāng)前頁的html代碼
sprnstr="<!--startprint"+oper+"-->";//設(shè)置打印開始區(qū)域
eprnstr="<!--endprint"+oper+"-->";//設(shè)置打印結(jié)束區(qū)域
prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //從開始代碼向后取html
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//從結(jié)束代碼向前取html
window.document.body.innerHTML=prnhtml;
window.print();
window.document.body.innerHTML=bdhtml;
} else {
window.print();
}
}
但是一般都是選擇性打印所以會調(diào)用方法:
復(fù)制代碼 代碼如下:
function preview()
{
bdhtml=window.document.body.innerHTML;
sprnstr="<!--startprint-->";
eprnstr="<!--endprint-->";
prnhtml=bdhtml.substr(bdhtml.indexOf(sprnstr)+17);
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));
window.document.body.innerHTML=prnhtml;
window.print();
}
問題又來了~
會有頁腳和頁眉~還有橫向和縱向之分~
怎么辦?
最好就是用到打印預(yù)覽~
因?yàn)樗锩嬗性O(shè)置
這時必須引用IE的一個控件"WebBrowser"
在頁面里引用:
<object id="WebBrowser" width=0 height=0 classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
</object>
其控件方法:
復(fù)制代碼 代碼如下:
WebBrowser.ExecWB(1,1) 打開
WebBrowser.ExecWB(2,1) 關(guān)閉現(xiàn)在所有的IE窗口,并打開一個新窗口
WebBrowser.ExecWB(4,1) 保存網(wǎng)頁
WebBrowser.ExecWB(6,1) 打印
WebBrowser.ExecWB(7,1) 打印預(yù)覽
WebBrowser.ExecWB(8,1) 打印頁面設(shè)置
WebBrowser.ExecWB(10,1) 查看頁面屬性
WebBrowser.ExecWB(15,1) 好像是撤銷,有待確認(rèn)
WebBrowser.ExecWB(17,1) 全選
WebBrowser.ExecWB(22,1) 刷新
WebBrowser.ExecWB(45,1) 關(guān)閉窗體無提示
示例:
<object id="WebBrowser" width="0" height="0" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2">
打印測試
<input type="button" onclick="WebBrowser.ExecWB(7,1)" value="打印預(yù)覽">
隨便用個文本文件復(fù)制粘貼~改后綴名~
ie運(yùn)行~點(diǎn)預(yù)覽~設(shè)置打印~打印~OK
然后再把其考到項(xiàng)目里~比如aspx里
同樣運(yùn)行,點(diǎn)預(yù)覽~
咦~怎么出現(xiàn)ie安全警告"internet explorer"已阻止此站點(diǎn)用不安全方式使用ActiveX控件"
這時就要改ie的安全設(shè)置了(如果沒裝補(bǔ)丁就沒事~那是你"rp"好,不一定客戶和其他的人的"rp"和你一樣好)
操作:
主菜單"工具"——Internet選項(xiàng)——安全——自定義級別, 將"安全設(shè)置"中"對沒有標(biāo)記為安全的ActiveX"控件進(jìn)行初始化和腳本運(yùn)行由"禁用"改為"啟用"
另一種方法,"工具" "Internet選項(xiàng)" "受信任的站點(diǎn)(可信站點(diǎn))""站點(diǎn)",然后填入網(wǎng)址即可,如果這個網(wǎng)站不是以https:連接的把下面"對該區(qū)域中的所有站點(diǎn)要求服務(wù)器驗(yàn)證(https:)"前面的勾去掉即可。
(如果是局域網(wǎng):那就是 "工具" "Internet選項(xiàng)" "本地Internet" "高級")
(無線網(wǎng)貌似不是局域網(wǎng)的)
推薦第二種~
萬事俱備~ok了~
打印方法集(沒有一一測試):
復(fù)制代碼 代碼如下:
--------------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT=""><script>
var hkey_root,hkey_path,hkey_key
hkey_root="HKEY_CURRENT_USER"
hkey_path="file://software//Microsoft//Internet Explorer\\PageSetup\\"
//設(shè)置網(wǎng)頁打印的頁眉頁腳為空
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){}
}
//設(shè)置網(wǎng)頁打印的頁眉頁腳為默認(rèn)值
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){}
}
function setdivhidden(id){//把指定id以外的層統(tǒng)統(tǒng)隱藏
var divs=document.getElementsByTagName("DIV");
for(var i=0;i<divs.length;i++)
{
if(divs.item(i).id!=id)
divs.item(i).style.display="none";
}
}
function setdivvisible(id){//把指定id以外的層統(tǒng)統(tǒng)顯示
var divs=document.getElementsByTagName("DIV");
for(var i=0;i<divs.length;i++)
{
if(divs.item(i).id!=id)
divs.item(i).style.display="block";
}
}
function printpr() //預(yù)覽函數(shù)
{
pagesetup_null();//預(yù)覽之前去掉頁眉,頁腳
setdivhidden("div1");//打印之前先隱藏不想打印輸出的元素
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);//在body標(biāo)簽內(nèi)加入html(WebBrowser activeX控件)
WebBrowser1.ExecWB(7, 1);//打印預(yù)覽
WebBrowser1.outerHTML = "";//從代碼中清除插入的html代碼
pagesetup_default();//預(yù)覽結(jié)束后頁眉頁腳恢復(fù)默認(rèn)值
setdivvisible("div1");//預(yù)覽結(jié)束后顯示按鈕
}
function print() //打印函數(shù)
{
pagesetup_null();//打印之前去掉頁眉,頁腳
setdivhidden("div1"); //打印之前先隱藏不想打印輸出的元素
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);//在body標(biāo)簽內(nèi)加入html(WebBrowser activeX控件)
WebBrowser1.ExecWB(6, 1);//打印
WebBrowser1.outerHTML = "";//從代碼中清除插入的html代碼
pagesetup_default();//打印結(jié)束后頁眉頁腳恢復(fù)默認(rèn)值
setdivvisible("div1");//打印結(jié)束后顯示按鈕
}
</script>
<body>
<div id=div0>
<input type=button value=打印預(yù)覽 onclick="printpr()">
<input type=button onClick="print()" value="打印">
表格一:
</div>
<div id=div1>
<table>
<tr><td>1111</td><td>1111</td><td>1111</td></tr>
<tr><td>1111</td><td>1111</td><td>1111</td></tr>
<tr><td>1111</td><td>1111</td><td>1111</td></tr>
</table>
</div>
</body>
</HTML>
----------------------------------------------------------------------------
JS實(shí)現(xiàn)局部打印和預(yù)覽:
第一種:
JS 實(shí)現(xiàn)簡單的頁面局部打印
復(fù)制代碼 代碼如下:
function preview(oper)
{
if (oper < 10){
bdhtml=window.document.body.innerHTML;//獲取當(dāng)前頁的html代碼
sprnstr="<!--startprint"+oper+"-->";//設(shè)置打印開始區(qū)域
eprnstr="<!--endprint"+oper+"-->";//設(shè)置打印結(jié)束區(qū)域
prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //從開始代碼向后取html
prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//從結(jié)束代碼向前取html
window.document.body.innerHTML=prnhtml;
window.print();
window.document.body.innerHTML=bdhtml;
} else {
window.print();
}
}
您可能感興趣的文章:
相關(guān)文章
javascript 在firebug調(diào)試時用console.log的方法
當(dāng)你使用console.log()函數(shù)時,下面的firebug一定要打開,不然這函數(shù)在用firefox運(yùn)行時無效且影響正常程序,如果用IE打開,將會出錯2012-05-05JavaScript 冒泡排序和選擇排序的實(shí)現(xiàn)代碼
本文通過實(shí)例代碼給大家介紹了js冒泡排序和選擇排序的實(shí)現(xiàn)代碼,代碼簡單易懂,非常不錯,具有參考借鑒價值,感興趣的朋友一起學(xué)習(xí)吧2016-09-09

javascript實(shí)現(xiàn)原生ajax的幾種方法介紹
項(xiàng)目中不需要加載jquery這種龐大的js插件要使用到ajax這種功能該如何辦呢?下面和大家分享幾種利用javascript實(shí)現(xiàn)原生ajax的方法
2013-09-09 
js removeChild 障眼法 可能出現(xiàn)的錯誤
js removeChild 障眼法之可能出現(xiàn)的錯誤,大家看下代碼就知道了。
2009-10-10