2012-02-13 77 views
8

我認爲這個問題的答案几乎肯定是「不」,因爲我已經做了一些測試和周圍進行搜索,但沒有任何技巧,從裏面檢測是否window.print()甚至威力工作頁面(即從JavaScript)?我知道,即使在臺式機/筆記本電腦上,也無法知道系統中是否配置了打印機,但至少瀏覽器會打印一個對話框。確定瀏覽器是否支持打印

我的Android手機有一個window.print()功能,但它(毫不奇怪)不會做任何事情。

再次聲明,我問大多所以有在SO :-)

回答

5

的主題一個很好的問題不幸的是,它看起來像一個沒有。 window.print()函數不是EMCAScript規範的一部分。這意味着它不需要成爲JavaScript語言的一部分,也沒有適合它的實現的文檔。這是未定義的行爲,因此對它進行測試看起來非常困難。

來源:

編輯:

可愛的小劇本我寫來測試我的瀏覽器,只檢查打印功能存在,然後問打印:

if(window.print) { 
    if(confirm('I can print. Would you like to?')) 
     window.print() 
} 
+0

是的,這就是我幾乎決定。好吧,也許現在這將作爲一個很好的參考點:-) – Pointy 2012-02-13 22:52:50

+2

我也寫了這個測試我的瀏覽器:http://jsfiddle.net/zdY4d/4/ – Jivings 2012-02-13 22:53:29

+0

@Jivings添加小提琴到您的答案... – powtac 2012-02-13 23:03:47

5

print()的方法是同步的。這可以做後果,以便決定是否顯示打印對話框

var start = +new Date(); 
window.print(); 
var delta = + new Date() - start; 
console.log(delta); 
if (delta > 100) { console.log('It worked'); } 
+0

儘管用戶必須嘗試打印以測試他是否可以打印:)。無論如何,如果打印失敗(不是delta> 100),您可以使用此腳本並顯示一條消息。 – Fernando 2014-02-05 11:12:51

+0

我假設如果一個瀏覽器定義了window.print(以避免腳本打破,試圖調用它),但實際上並沒有做任何事情,它將花費不到100ms來處理下一行代碼。我喜歡。我只是希望有一種方法來測試沒有實際調用它!不過,這是我見過的最好的解決方案。 – jinglesthula 2014-02-13 20:50:46

+1

順便說一句,萬一任何人想知道加號,http://stackoverflow.com/questions/221539/what-does-the-plus-sign-do-in-return-new-date – jinglesthula 2014-02-13 22:04:42

相關問題