很久沒有寫前端的文章了,今天就來說說js一個比較方便的功能,打印當前頁面或保存成pdf吧。
js有一個原生的函數,print(),顧名思義就是打印。但是有時候我們需要打印頁面某些部分,所以需要對頁面進行處理一下:
可以寫一個函數去封裝:
function preview() { body = window.document.body.innerHTML; startpoint= "<!--startpoint-->"; endpoint= "<!--endpoint-->"; printdb= body.substring(body.indexOf(startpoint) + 17); printdb = printdb.substring(0, printdb.indexOf(endpoint)); window.document.body.innerHTML = printdb ; window.print(); window.document.body.innerHTML = body ; }
這里首先獲取當前頁面的innerHtml,然后設置想要頁面開始的點,和結束的點,這樣就可以匹配出我們想要打印的部分了,
接着我們需要把當前頁面的innerhtml設置為打印的頁面,然后打印,最后把頁面設置會一開始的樣子。
當然如果我們不需要打印部分頁面的話直接:
window.print();
就搞定了。
打印效果圖:
不過這里的打印會出現我們input有值,但是打印的pdf中input沒有值的情況:
所以我們需要將jq將input中的值循環賦值:
var input = $('input'); input.each(function () { $(this).attr("value", $(this).val()); });
這樣就不會出現input不打印的情況了。