js打印页面源码 ,打印选取的容器里的内容,打印指定内容
效果
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>打印测试</title>
</head>
<body>
<div id="printBox">
<h1>打印h1</h1>
<h2>打印h2</h2>
<h3>打印h3</h3>
<ul>
<li>ul-li-1</li>
<li>ul-li-2</li>
<li>ul-li-3</li>
</ul>
<ol>
<li>ol-li-1</li>
<li>ol-li-2</li>
<li>ol-li-3</li>
</ol>
</div>
<button onclick="printFun('printBox')">打印</button>
<script>
var printFun=function(domId){
console.log('打印');
var u = window.open("\u6253\u5370\u7a97\u53e3", "_blank",'',true);
var v=document.querySelector('#'+domId).innerHTML;
u.document.write(v),u.document.close(),u.print(),u.close();
}
</script>
</body>
</html>
代码解读
html代码解析
这里有一个容器,是用来装载需要打印的内容
<div id="printBox">
按钮是为了触发打印事件
<button onclick="printFun('printBox')">打印</button>
JS代码解析
Unicode码
\u6253\u5370\u7a97\u53e3
的意思的
“打印窗口”
这个属于 Unicode码
为什么要这样写,是方便传参,且,浏览器会自动解析成中文
提供一个在线工具:Unicode编码转换 - 站长工具
Unicode编码转换 - 站长工具
新增一个打印窗体
这里新增一个窗体后是获取了这个窗体对象,方便后续操作这个窗体对象
var u = window.open("\u6253\u5370\u7a97\u53e3", "_blank",'',true);
方法解释
var u = window.open("名称", "是否弹出一个新的窗体",'',URL 替换浏览历史中的当前条目);
具体可参考下面文章
window.open()的用法,js打开新窗体_window.open 干净的窗体-CSDN博客
获取当前需要打印的容器内容
var v=document.querySelector('#'+domId).innerHTML;
u.document.write(v)//写入内容
u.document.close()//关闭文档
u.print()//触发打印
u.close();//关闭