2015-06-16 164 views
1

如何從打印頁面僅捕獲取消事件?捕獲(不同)打印/取消打印按鈕事件(單擊)

我有一個頁面,在一個按鈕上點擊你有一個新的打開打印加載的標籤,如果你點擊取消(不打印)我必須調用一個方法。相同的打印。

如果打印想要執行PrintSuccesfully(),如果取消打印,我想執行PrintCancelled()。

我打開新標籤代碼:

var windowObject = window.open('', '_blank'); 
windowObject.document.write(generatePrintHTMLBody(scope)); 
windowObject.document.close(); 
windowObject.focus(); 
windowObject.print(); 
windowObject.close(); 

我擡頭onbeforeprint和onafterprint,但兩者都與matchMedia執行,就按CTRL + P事件或對我的代碼在打印/取消按鈕的點擊。

我測試的代碼被列入generatePrintHTMLBody(範圍)發現here

(function() { 
    var beforePrint = function() { 
     console.log('Functionality to run before printing.'); 
    }; 
    var afterPrint = function() { 
     console.log('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; 
}()); 

回答

1

了大量的研究,似乎你不能這樣做......的行爲SI diferent對每個瀏覽器的按鈕後,或者它具有相同的簽名,因此不存在解決方案。