我認爲這個問題的答案几乎肯定是「不」,因爲我已經做了一些測試和周圍進行搜索,但沒有任何技巧,從裏面檢測是否window.print()
甚至威力工作頁面(即從JavaScript)?我知道,即使在臺式機/筆記本電腦上,也無法知道系統中是否配置了打印機,但至少瀏覽器會打印一個對話框。確定瀏覽器是否支持打印
我的Android手機有一個window.print()
功能,但它(毫不奇怪)不會做任何事情。
再次聲明,我問大多所以有在SO :-)
我認爲這個問題的答案几乎肯定是「不」,因爲我已經做了一些測試和周圍進行搜索,但沒有任何技巧,從裏面檢測是否window.print()
甚至威力工作頁面(即從JavaScript)?我知道,即使在臺式機/筆記本電腦上,也無法知道系統中是否配置了打印機,但至少瀏覽器會打印一個對話框。確定瀏覽器是否支持打印
我的Android手機有一個window.print()
功能,但它(毫不奇怪)不會做任何事情。
再次聲明,我問大多所以有在SO :-)
的主題一個很好的問題不幸的是,它看起來像一個沒有。 window.print()
函數不是EMCAScript規範的一部分。這意味着它不需要成爲JavaScript語言的一部分,也沒有適合它的實現的文檔。這是未定義的行爲,因此對它進行測試看起來非常困難。
來源:
編輯:
可愛的小劇本我寫來測試我的瀏覽器,只檢查打印功能存在,然後問打印:
if(window.print) {
if(confirm('I can print. Would you like to?'))
window.print()
}
beforeprint and afterprint events可能有幫助,但我不確定瀏覽器支持。
編輯:Webkit的does not support them
print()
的方法是同步的。這可以做後果,以便決定是否顯示打印對話框
var start = +new Date();
window.print();
var delta = + new Date() - start;
console.log(delta);
if (delta > 100) { console.log('It worked'); }
儘管用戶必須嘗試打印以測試他是否可以打印:)。無論如何,如果打印失敗(不是delta> 100),您可以使用此腳本並顯示一條消息。 – Fernando 2014-02-05 11:12:51
我假設如果一個瀏覽器定義了window.print(以避免腳本打破,試圖調用它),但實際上並沒有做任何事情,它將花費不到100ms來處理下一行代碼。我喜歡。我只是希望有一種方法來測試沒有實際調用它!不過,這是我見過的最好的解決方案。 – jinglesthula 2014-02-13 20:50:46
順便說一句,萬一任何人想知道加號,http://stackoverflow.com/questions/221539/what-does-the-plus-sign-do-in-return-new-date – jinglesthula 2014-02-13 22:04:42
是的,這就是我幾乎決定。好吧,也許現在這將作爲一個很好的參考點:-) – Pointy 2012-02-13 22:52:50
我也寫了這個測試我的瀏覽器:http://jsfiddle.net/zdY4d/4/ – Jivings 2012-02-13 22:53:29
@Jivings添加小提琴到您的答案... – powtac 2012-02-13 23:03:47