JS實(shí)現(xiàn)頁(yè)面打?。ㄕw、局部)
我們?cè)诰W(wǎng)頁(yè)開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)有打印頁(yè)面的需求,通過(guò)JS來(lái)實(shí)現(xiàn)的方法有很多,這里我做了一個(gè)整理,供大家參考。
方式一:window.print()
整體打印
<a href="javascrīpt:window.print()" rel="external nofollow" target="_self">打印</a>
現(xiàn)在就輕松實(shí)現(xiàn)了頁(yè)面的打印,但是這種方式會(huì)將整個(gè)頁(yè)面打印,如果想要實(shí)現(xiàn)指定區(qū)域的打印需要通過(guò)下面的設(shè)置
局部打印
首先,在html中,通過(guò)star和end來(lái)標(biāo)記打印區(qū)域
<h1>這塊內(nèi)容不需要打印</h1>
<!--startprint-->
<div class="content">
這里是需要打印的內(nèi)容
.....
</div>
<!--endprint-->
<h1>這塊內(nèi)容不需要打印</h1>
然后,在點(diǎn)擊事件中添加如下代碼
function doPrint() {
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();
}
過(guò)濾打印區(qū)域的內(nèi)容
例如
<!--startprint-->
<div class="content">
<button class="noprint">預(yù)覽</button>
<button class="noprint">打印</button>
這里是需要打印的內(nèi)容
.....
</div>
<!--endprint-->
上面的預(yù)覽和打印按鈕不希望打印,如果要過(guò)濾的話(huà)可以做下面的樣式設(shè)置
<style type="text/css">
@media print {
.noprint{
display: none;
}
}
</style>
or
<style type="text/css" media="print">
.noprint{
display: none;
}
</style>
兩種寫(xiě)法任選其一
分頁(yè)打印
使用 window.print() 打印時(shí),如果內(nèi)容超出會(huì)自動(dòng)分頁(yè)。但是我們?nèi)绻枰远x分頁(yè)范圍,如碰到表格分頁(yè)打印,可以通過(guò)進(jìn)行如下設(shè)置:
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="page-break-after:always" > </table>
方式二、jqprint()
jqprint是一個(gè)基于jQuery編寫(xiě)的頁(yè)面打印的一個(gè)小插件,但是不得不承認(rèn)這個(gè)插件確實(shí)很厲害,最近的項(xiàng)目中幫了我的大忙,在Web打印的方面,前端的打印基本是靠window.print()的方式進(jìn)行打印的,而這個(gè)插件在其基礎(chǔ)上進(jìn)行了進(jìn)一步的封裝,可以輕松實(shí)現(xiàn)打印網(wǎng)頁(yè)上的某個(gè)區(qū)域,這是個(gè)亮點(diǎn)。
參考網(wǎng)址:http://www.fzitv.net/article/102230.htm
請(qǐng)注意!很多朋友遇到 Cannot read property 'opera' of undefined 錯(cuò)誤問(wèn)題是juqery版本兼容問(wèn)題
解決方法:加入遷移輔助插件 jquery-migrate-1.0.0.js可解決版本問(wèn)題
引入
<script language="javascript" src="jquery-1.4.4.min.js"></script> <script language="javascript" src="jquery.jqprint-0.3.js"></script>
js
<script language="javascript">
function a(){
$("#ddd").jqprint();
}
</script>
html
<div id="ddd">
<table>
<tr>
<td>test</td>
<td>test</td>
<td>test</td>
<td>test</td>
<td>test</td>
</tr>
</table>
</div>
<input type="button" onclick=" a()" value="打印"/>
設(shè)置模板打印
$("#printContainer").jqprint({
debug: false, //如果是true則可以顯示iframe查看效果(iframe默認(rèn)高和寬都很小,可以再源碼中調(diào)大),默認(rèn)是false
importCSS: true, //true表示引進(jìn)原來(lái)的頁(yè)面的css,默認(rèn)是true。(如果是true,先會(huì)找$("link[media=print]"),若沒(méi)有會(huì)去找$("link")中的css文件)
printContainer: true, //表示如果原來(lái)選擇的對(duì)象必須被納入打?。ㄗ⒁猓涸O(shè)置為false可能會(huì)打破你的CSS規(guī)則)。
operaSupport: true//表示如果插件也必須支持歌opera瀏覽器,在這種情況下,它提供了建立一個(gè)臨時(shí)的打印選項(xiàng)卡。默認(rèn)是true
});
附言
另外還可以使用html 標(biāo)簽<object>引入Webbrowser控件(只兼容IE)或者調(diào)用windows底層打印,報(bào)安全警告,不建議使用(不支持局部打印)
這里只介紹兩種方式,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序分享小程序碼的生成(帶參數(shù))以及參數(shù)的獲取
這篇文章主要介紹了微信小程序分享小程序碼的生成(帶參數(shù))以及參數(shù)的獲取,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Servlet實(shí)現(xiàn)文件上傳,可多文件上傳示例
本篇文章主要介紹了Servlet實(shí)現(xiàn)文件上傳,可多文件上傳示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
在for循環(huán)中l(wèi)ength值是否需要緩存
這篇文章主要介紹了在for循環(huán)中l(wèi)ength值是否需要緩存,需要的朋友可以參考下2015-07-07
微信小程序?qū)崿F(xiàn)提交input信息到后臺(tái)的方法示例
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)提交input信息到后臺(tái)的方法,結(jié)合實(shí)例形式分析了微信小程序提交input信息到后臺(tái)相關(guān)事件響應(yīng)與數(shù)據(jù)處理操作技巧,需要的朋友可以參考下2019-01-01
javascript入門(mén)之?dāng)?shù)組[新手必看]
本文介紹了javascript 數(shù)組的定義和數(shù)組元素的操作,ECMAScript中的數(shù)組方法...希望對(duì)大家有所幫助2016-11-11
JS實(shí)現(xiàn)移動(dòng)端在線(xiàn)簽協(xié)議功能
這篇文章主要介紹了JS實(shí)現(xiàn)移動(dòng)端在線(xiàn)簽協(xié)議功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08
JS如何生成一個(gè)不重復(fù)的ID的函數(shù)
這篇文章主要介紹了JS如何生成一個(gè)不重復(fù)的ID的函數(shù),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下2016-12-12
JS實(shí)現(xiàn)間歇滾動(dòng)的運(yùn)動(dòng)效果實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)間歇滾動(dòng)的運(yùn)動(dòng)效果,涉及javascript定時(shí)器觸發(fā)動(dòng)態(tài)改變頁(yè)面元素的相關(guān)操作技巧,需要的朋友可以參考下2016-12-12

