Распечатать из внешнего интерфейса javascript? - PullRequest
6 голосов
/ 07 марта 2011

Можно ли напечатать что-нибудь на принтере с помощью javascript в браузере?

Я хочу напечатать номер чека, поэтому, если это возможно, какой принтер самый быстрый, когда пользователь нажимает кнопкуон распечатает например.«1234» на маленькой бумаге.

Спасибо

Ответы [ 2 ]

11 голосов
/ 07 марта 2011

Вы не можете получить доступ к принтеру напрямую из Javascript, но вы можете позвонить window.print(), что вызовет стандартное поведение печати в браузере. Используя это, вы можете попробовать два метода для достижения того, что вы хотите:

Непосредственно перед вызовом window.print() введите динамическую таблицу стилей печати, которая показывает только элементы с текстом, который вы хотите напечатать. Вы должны быть осторожны, чтобы очистить все предыдущие таблицы стилей печати. Или на самом деле вы можете просто использовать элемент <div id="printable">, который является единственным видимым элементом в вашей таблице стилей печати, и вставить любой текст, который будет напечатан в нем. (Будьте внимательны, если это веб-сайт, который пользователи могут захотеть распечатать)

Также можно вызвать print() непосредственно в окне iframe, которое вы можете заполнить нужным текстом. Например:

var iframe = document.createElement('iframe');

iframe.onload = function() {
    var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document;
    doc.getElementsByTagName('body')[0].innerHTML = "<p>1234</p>";

    iframe.contentWindow.focus(); // This is key, the iframe must have focus first
    iframe.contentWindow.print();
}

document.getElementsByTagName('body')[0].appendChild(iframe);
4 голосов
/ 07 марта 2011

Вы не можете получить доступ к настройкам печати из браузера.

Это связано с соображениями безопасности, иначе принтеры по всему миру будут печатать без остановки.

Единственное, что вы можете сделать в отношении печати в javascript при вызове window.print();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...