Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 在AngularJS中打印div而不打开新窗口_Javascript_Angularjs - Fatal编程技术网

Javascript 在AngularJS中打印div而不打开新窗口

Javascript 在AngularJS中打印div而不打开新窗口,javascript,angularjs,Javascript,Angularjs,我需要使用按钮打印div的内容。我已经找到了出路,用AngularJS做了 我的问题是,每当调用print时,它也会打开一个新窗口;它不应该打开它 有没有办法阻止新窗户的打开 代码如下: JS: $scope.printControl = function(id) { var printContents = document.getElementById(id).innerHTML; var popupWin = $window.open('', '_blank', 'width

我需要使用
按钮打印
div
的内容。我已经找到了出路,用AngularJS做了

我的问题是,每当调用print时,它也会打开一个新窗口;它不应该打开它

有没有办法阻止新窗户的打开

代码如下:

JS:

$scope.printControl = function(id) {
    var printContents = document.getElementById(id).innerHTML;
    var popupWin = $window.open('', '_blank', 'width=800,height=800');
    popupWin.document.open();
    popupWin.document.write('<html><body onload="window.print()">' + printContents + '</body></html>');
    popupWin.document.close();
};    
<div id="printDiv">
    This div needs to be printed
  </div>
  <button ng-click="printControl('printDiv')">
  Print
</button>
$scope.printControl=函数(id){
var printContents=document.getElementById(id).innerHTML;
var popupWin=$window.open('''.'空白','宽度=800,高度=800');
popupWin.document.open();
popupWin.document.write(“”+打印内容+“”);
popupWin.document.close();
};    
HTML:

$scope.printControl = function(id) {
    var printContents = document.getElementById(id).innerHTML;
    var popupWin = $window.open('', '_blank', 'width=800,height=800');
    popupWin.document.open();
    popupWin.document.write('<html><body onload="window.print()">' + printContents + '</body></html>');
    popupWin.document.close();
};    
<div id="printDiv">
    This div needs to be printed
  </div>
  <button ng-click="printControl('printDiv')">
  Print
</button>

这个div需要打印
印刷品

我只想做:

$scope.printControl = function(id) {
   $scope.visible = true;
   $timeout(function(){
        $window.print();         
        $timeout(function(){
           $scope.visible = false;
        }, 0);
   }, 0);
};
并通过以下方式修改按钮:

<button ng-click="printControl('printDiv')" ng-hide="visible">

其思想是在单击按钮打印时隐藏不想在dom中打印的元素,然后立即重新显示它们


链接到已更新。

实际上,您已经在JS中定义了打开一个新窗口($window.open(“,”u blank“…)。您可以将“\u blank”替换为“\u self”。这将在同一窗口中打开打印提示,而无需离开该窗口。但我相信您实际上根本无法拒绝此提示,因为出于安全原因,用户必须对打印本身进行最后控制。@Martin执行此操作后,我能够在窗口本身中看到
div
内容,这是我不想要的。Th整个
html
正在被打印。只有
div
应该被打印。恐怕这是不打开新窗口的唯一方法,但我们希望有另一种解决方案。