2010-07-27 61 views
1

我正在努力解決這個問題,今晚我的成就一直不大。我認爲如果我只知道在調用window.print()函數時觸發了什麼事件,我可以使代碼在下面工作。調用window.print()時觸發了什麼事件?

var browser_name = navigator.appName; 

if(browser_name == 'Microsoft Internet Explorer'){ 
    window.attachEvent("print()",on_print_function);//I realize I cannot attach an event listener to a function, I just wanted you to see what I am trying to accomplish 
} 

else{ 
    window.addEventListener("print()",on_print_function,false); 
} 

print事件發生時調用該函數返回存儲在數據庫中的某些信息的頁面。

我的最終目標是隻有當問題信息將被存儲在數據庫中時纔打印頁面。 我很樂意解決這個問題,但我認爲如果我可以按照我所說的那樣獲得print()的活動,那麼它就會好起來。

編輯

我對這個放棄現在,我已經有做我想做的另一種方式解決。我期待着FireFox支持onbeforeprint()onafterprint()的那一天。

回答

1

據我所知,IE有幾個事件行onbeforeprint()和onafterprint(),但它們不被其他瀏覽器支持。所以依靠這個不是很好。

也許你可以在你的頁面上有一個打印按鈕。附加一個處理程序,它執行ajax調用服務器以將數據存儲到數據庫,並在此調用成功時調用窗口上的print()。

這是你在找什麼?

+0

打印按鈕是一種選擇,但我真的想趕上當人們去'文件>打印'。如果我只關心IE,函數'onbeforeprint()'會適用於我,但我也需要在FireFox中工作。我的另一個問題有這樣的背景信息: http://stackoverflow.com/questions/3339789/onbeforeprint-and-onafterprint-equivalent-for-non-ie-browsers-php-mysql-ja – ubiquibacon 2010-07-27 05:11:47

+0

據我所知其他瀏覽器不支持這些事件,並且您將遇到問題。也許,一個稍微不同的方法。這個數據是頁面上的一個表單嗎?這個數據可以在網頁上提交嗎?在頁面上的提交按鈕之後,是否可以將用戶導航到打印頁面? – sTodorov 2010-07-27 05:22:53

+0

問題是,我正在處理的頁面是一系列客戶賬單,打印後會自動郵寄。如果用戶不打印頁面,頁面只是一個評論,但如果他們打印頁面,那麼數據庫需要更新以說明賬單已經打印並且已經被郵寄。我不能抓住用戶打印賬單和數據庫沒有更新的機會。我需要他們一個接一個地發生。 – ubiquibacon 2010-07-27 05:33:36

0

顯然,你現在可以聽這與Firefox(而不是其他瀏覽器):

一些瀏覽器(包括Firefox 6及更高版本和Internet Explorer)發送beforeprint和打印後的事件,讓內容確定打印可能時已經發生。您可以使用它來調整打印過程中顯示的用戶界面(例如在打印過程中顯示或隱藏用戶界面元素)。

用戶打印或中止打印對話框後引發afterprint事件。

https://developer.mozilla.org/en-US/docs/Web/API/window.onafterprint

您可以用其他瀏覽器媒體查詢來模擬這種:https://stackoverflow.com/a/18325463/421243

相關問題