Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript覆盖屏幕上的数据并刷新页面_Javascript_Html_Angularjs - Fatal编程技术网

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();