如何在新标签页中打印div标签内容,替代弹出窗口实现打印
解决方案
核心改动点:你当前代码弹出独立窗口的原因是window.open传入了第三个窗口特性参数,移除该参数即可默认在新标签页打开内容
修改后的完整代码如下:
function printdiv(printpage) { var headstr = "<html><head><title>打印预览</title></head><body>"; var footstr = "</body></html>"; // 赋值打印时间 document.getElementById('<%=lblDateTime.ClientID %>').style.display = "block"; document.getElementById('<%=lblDateTime.ClientID %>').innerHTML = new Date().toLocaleString(); var newstr = document.getElementById(printpage).innerHTML; // 打开新标签页,移除第三个参数就不会触发独立弹窗 const w = window.open("", "_blank"); w.document.write(headstr + newstr + footstr); w.document.close(); w.focus(); // 不需要自动打印就注释下面这行 w.print(); return false; }
<div id="div_print"> 该内容需要在新标签页而非弹窗中打开打印 </div>
注意事项
- 原代码中存在替换当前页面
document.body.innerHTML的冗余逻辑,会导致原页面绑定的所有事件失效,修改后的代码已经将其移除,避免原页面出现异常 - 如果不需要打开新标签页后立即触发打印,直接注释掉
w.print()即可,用户可以在新标签页自行查看内容后手动触发打印 - 浏览器的弹窗拦截规则会拦截非用户交互触发的
window.open调用,请将printdiv函数绑定到按钮点击等用户主动触发的事件上,避免被拦截
内容的提问来源于stack exchange,提问作者rimi
相关产品推荐
相关产品推荐

