Определите, поддерживает ли браузер печать - PullRequest
8 голосов
/ 14 февраля 2012

Я думаю, что ответ на этот вопрос почти наверняка "нет", потому что я провел небольшое тестирование и поиск, но есть ли хитрость, чтобы определить, может ли window.print() даже работать изнутри страница (то есть из JavaScript)? Я знаю, что даже на настольном компьютере / ноутбуке невозможно узнать, например, настроен ли в системе принтер, но, по крайней мере, браузер выведет диалоговое окно печати. ​​

Мой телефон Android имеет функцию window.print(), но (что неудивительно) ничего не делает.

Опять я спрашиваю в основном, поэтому есть хороший вопрос по теме в SO: -)

Ответы [ 3 ]

5 голосов
/ 14 февраля 2012

Метод print() является синхронным. Это позволяет сделать последствие, чтобы решить, было ли показано диалоговое окно печати

var start = +new Date();
window.print();
var delta = + new Date() - start;
console.log(delta);
if (delta > 100) { console.log('It worked'); }
5 голосов
/ 14 февраля 2012

К сожалению, похоже, нет. Функция window.print() не является частью спецификации EMCAScript. Это означает, что для него не требуется быть частью языка JavaScript, и нет надлежащей документации для его реализации. Это неопределенное поведение, поэтому его тестирование выглядит очень сложно.

Источники:

EDIT:

Милый маленький скрипт, который я написал для проверки своих браузеров, просто проверяет, существует ли функция печати, а затем просит напечатать:

if(window.print) {
    if(confirm('I can print. Would you like to?'))
        window.print()
}
3 голосов
/ 14 февраля 2012

События beforeprint и afterprint могут помочь, но я не уверен в поддержке браузера.

Редактировать: Webkit не поддерживает их

...