2017-06-12 87 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()?

這裏沒有測試這個特殊的代碼,但沒有類似的事情之前。

相關問題