我有一个使用angularJS的单页Web应用程序.我需要打印某个页面的div.我尝试了以下方法:
该页面包含几个div(print.html)
<div>
<div>
Do not print
</div>
<div id="printable">
Print this div
</div>
<button ng-click="printDiv('printableArea');">Print Div</button>
</div>
Run Code Online (Sandbox Code Playgroud)
控制器有以下脚本:
$scope.printDiv = function(divName) {
var printContents = document.getElementById(divName).innerHTML;
var originalContents = document.body.innerHTML;
document.body.innerHTML = printContents;
window.print();
document.body.innerHTML = originalContents;
}
Run Code Online (Sandbox Code Playgroud)
此代码打印所需的div但存在问题.该声明document.body.innerHTML = originalContents;取代了整个申请的正文,因为它是一个SPA.因此,当我刷新页面或再次单击打印按钮时,页面的整个内容都将被删除.
有2个文件:index.html和print.html
第一个包含一个print.html使用简单命令打开的按钮:
window.open("print.html", "_blank", "menubar=yes,toolbar=yes,status,scrollbars,resizable");
Run Code Online (Sandbox Code Playgroud)
print.html 仅包含一个用于打开打印预览对话框的按钮:
<button onclick="window.print();">
Run Code Online (Sandbox Code Playgroud)
打开打印预览对话框时出现问题.在这种情况下,任何操作index.html- 即启动ajax请求的其他文件 - 都会被临时阻止并放入队列.只有在预览关闭时,浏览器才会触发所有请求.
我只能在谷歌浏览器(24.0.1312.52米)中看到它.
任何人都可以确认这是Chrome的错误吗?
有没有人知道我可以使用javascript检查浏览器窗口何时关闭并弹出确认dailog以询问用户是否确认退出浏览器或更改他的想法留下?
在以下链接中
<a href=\"#\" onclick=javascript:print(\"\") style=\"color:blue;\">Print</a>"
<script>
function print()
{
//How to print the contents of another page
}
Run Code Online (Sandbox Code Playgroud) 当我们在我们的网络应用程序中启动Chrome子窗口时,window.open()或者通过用户单击链接target="_blank",然后在该子窗口中,主体onload="window.print()"自动启动打印对话框并打印预览,然后用户关闭打印/子窗口而不是单击取消,父窗口完全被冲洗.特别:
如果您在子窗口(通过其启动打印预览的位置window.print())上单击取消,一切都很好.但是如果用户关闭窗口,就会发生所有的疯狂.
这是Chrome中的已知错误:
有谁知道这个的解决方法?
我在单击按钮时使用 window.open() ,并在该页面上使用 window.print() 。如果我只是关闭带有打印对话框的窗口(没有选择“保存”或“取消”),则 Google Chrome 中的父页面将变得无响应。
它与其他浏览器配合良好。
任何人都可以帮忙解决这个问题吗?