2017-06-12 55 views
0

我有这样的方法:如果在打印对话框中单击取消,如何关闭选项卡?

print(data): void{ 
    let printContents, popupWin; 
    let trHtml = ''; 
    for (let entry of data) { 
     trHtml += `<tr> 
         <td>` + entry.aaabroj + `</td> 
         <td>` + entry.bbbbroj + `</td> 
         <td>` + entry.sifratipa + `</td> 
         <td>` + entry.vrijemepoziva + `</td> 
         <td>` + entry.trajanjepoziva + `</td> 
         <td>` + entry.iznoskm + `</td> 
        </tr>`; 
    } 
    window.open('', 'popupWin', ''); 
    window.print(); 
    popupWin.document.write(` 
    <html> 
     <head> 
     <title>Detaljni izvještaj</title> 
     <style> 
      table { 
       font-family: arial, sans-serif; 
       border-collapse: collapse; 
       width: 100%; 
      } 

      td, th { 
       border: 1px solid #dddddd; 
       text-align: left; 
       padding: 8px; 
      } 

      tr:nth-child(even) { 
       background-color: #dddddd; 
      } 
     </style> 
     </head> 
    <body> 
     <table> 
     <tr> 
      <th>Pretp.broj</th> 
      <th>Pozvani broj</th> 
      <th>Tip poziva</th> 
      <th>Start</th> 
      <th>Količina</th> 
      <th>Cijena</th> 
     </tr> 
     `+trHtml+` 
     </table> 
    </body> 
    </html>`); 
    } 

现在我在打印对话框中打开表,但是当用户点击取消关闭打印对话框,但标签仍然是开放的。任何建议如何关闭该标签呢?

回答

0

您无法直接从常规网页访问Chrome的内部窗口(在这种情况下是打印对话框)。

(function() { 

    var beforePrint = function() { 
     alert('Functionality to run before printing.'); 
    }; 

    var afterPrint = function() { 
     alert('Functionality to run after printing'); 
    }; 

    if ($window.matchMedia) { 
     var mediaQueryList = $window.matchMedia('print'); 

     mediaQueryList.addListener(function (mql) { 
      if (mql.matches) { 
       beforePrint(); 
      } else { 
       afterPrint(); 
      } 
     }); 
    } 

    $window.onbeforeprint = beforePrint; 
    $window.onafterprint = afterPrint; 

}()); 

参考:How to capture the click event on the default print menu called by Javascript window.print()?

这里没有测试这个特殊的代码,但没有类似的事情之前。

相关问题