2017-07-05 79 views
0

我在檢測到javascript中的打印事件時遇到了問題。例如,用戶不願意打印文檔並在網頁上按下打印,則另一個窗口出現,例如,從Adobe Reader進行打印,然後出現另一個Adobe Reader窗口,您可以在其中設置屬性,選擇要打印的頁面以及不需要的內容...並在此窗口中顯示打印按鈕。我真的可以檢測到用戶何時在瀏覽器中使用JavaScript在此Adobe Reader窗口內按下此打印按鈕?檢測用戶是否通過javascript打印了某些內容

我已經嘗試使用onafterprint但也許我沒有做到這一點或我不知道。

它在我的主要js文件裏面是這樣的。

window.onbeforeprint = function() { 
    console.log('This will be called before the user prints.'); 
}; 
window.onafterprint = function() { 
    console.log('This will be called after the user prints'); 
}; 

我把從這裏:https://www.tjvantoll.com/2012/06/15/detecting-print-requests-with-javascript/

回答

0

你知道你的代碼什麼也不做? 這一個會幫助你。

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

在任何打開的頁面上的開發控制檯中運行它,然後點擊ctrl-P,你應該看到消息。

+0

它只適用於我試圖打印按ctrl + p。當用戶點擊「打印」並轉到打印機時,我需要捕捉事件。只有在真正要印刷的時候。 – CodePuppe

+0

您的意思是文件 - >打印或?因爲第一個至少在Chrome中工作。 –

+0

我的意思是'

0

您是否嘗試過在同一鏈接中使用matchMedia

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

有沒有做瀏覽器的兼容性檢查的電池充滿電,但該代碼的作品和版畫兩個語句我在Safari 9.1.1,而onafterprint東西不工作(雖然我曾經導出爲PDF我在打印對話框中,因爲我沒有打印機)。

我認爲通過ADOBE READER你只是說,你選擇一臺打印機和拷貝/這頁/等,因爲據我所知的Adobe Reader數正常打印彈出框是桌面軟件

+0

是的,但它會在我的服務器ip在地址欄中的瀏覽器窗口中打開。有沒有辦法? – CodePuppe

相關問題