Javascript覆盖屏幕上的数据并刷新页面
我一直在做一个项目,我只需要打印一个隐藏的Javascript覆盖屏幕上的数据并刷新页面,javascript,html,angularjs,Javascript,Html,Angularjs,我一直在做一个项目,我只需要打印一个隐藏的div的内容。下面的解决方案工作正常,但将页面内容替换为div,然后调用窗口的打印,然后将页面替换为原始内容。这很好,但当我在此之后单击页面或再次尝试打印时,页面会刷新 有没有一种方法,不用打开新窗口来打印div的内容,页面仍然可以正常工作 $scope.printDiv = function(printable) { var restorePage = document.body.innerHTML; var printCont
div
的内容。下面的解决方案工作正常,但将页面内容替换为div
,然后调用窗口的打印,然后将页面替换为原始内容。这很好,但当我在此之后单击页面或再次尝试打印时,页面会刷新
有没有一种方法,不用打开新窗口来打印div
的内容,页面仍然可以正常工作
$scope.printDiv = function(printable) {
var restorePage = document.body.innerHTML;
var printContent = document.getElementById(printable).innerHTML;
document.body.innerHTML = "<html><head><title></title></head><body>" + printContent + "</body>";
window.print();
document.body.innerHTML = restorePage;
};
$scope.printDiv=函数(可打印){
var restorePage=document.body.innerHTML;
var printContent=document.getElementById(可打印).innerHTML;
document.body.innerHTML=“+printContent+”;
window.print();
document.body.innerHTML=恢复页面;
};
我创建了一个指令,它做了类似的事情。它包括创建一个新窗口,用想要打印的HTML填充它,打印该窗口,然后最后关闭
代码如下所示:
$scope.printPage = function() {
var pageToPrint = $window.open('', 'Print Page', 'width=800, height=600');
pageToPrint.document.write(angular.element(pageHtml).html());
pageToPrint.document.close();
pageToPrint.focus();
pageToPrint.print();
pageToPrint.close();
}
这在所有浏览器中都有效,并且在用户完成打印对话框窗口后,会干净地关闭所有内容。查看我发现的类似问题: 看来这就是你要找的 如果你想打印不可见的内容,你可以使用两个 不同媒体的不同css文件(屏幕与打印),其中 通过显示隐藏/取消隐藏所需内容:无;然后 通过window.print()生成打印对话框 主题2.css:
.on_page { display: none; }
需要时,您可以通过以下方式触发打印对话框生成:
window.print();
您可以使用CSS实现这一点:
当用户单击按钮时,使用
.no print
类将整个页面包装在div
中。下一步将您的内容添加到上一个div
旁边的另一个div中。调用print()
并恢复页面。它应该可以工作。我在今天早上之前也做过同样的事情,它正在处理静态数据。每个隐藏的div
中都有不同的信息,并且没有提取不同的数据。@BrandonWilson那么听起来你的问题不是“如何打印html”,而是“如何获取正确的html”。这和你贴的完全不同。你需要一个全新的问题和额外的代码;document.getElementById(“可打印”).innerHTML;第4行:document.body.innerHTML=printContent;
.on_page { display: none; }
window.print();