2012-05-22 2 views
1

(Это через Grease/Tampermonkey).Хром: не печатает содержимое javascript

Вот функция печати для киоска с использованием бета-браузера Chrome:

$("#autoCheckOrder button").click (function() { 
    var newWin  = window.open (""); 
    newWin.document.write ("<!DOCTYPE html>"); 
    newWin.document.write("<html>"); 
    newWin.document.write("<head>"); 
    newWin.document.write("<title>"); 
    newWin.document.write("</title>"); 
    newWin.document.write("<style>"); 
    newWin.document.write("@media print { "); 
    newWin.document.write("body { "); 
    newWin.document.write("background-color: white;"); 
    newWin.document.write("width: 55mm;"); 
    newWin.document.write("position: absolute;"); 
    newWin.document.write("top: 0;"); 
    newWin.document.write("left: 0;"); 
    newWin.document.write("padding: 0px;"); 
    newWin.document.write("font-size: 14px;"); 
    newWin.document.write("line-height: 18px;"); 
    newWin.document.write("}"); 
    newWin.document.write("}"); 
    newWin.document.write("</style>"); 
    newWin.document.write("</head>"); 
    newWin.document.write("<body>"); 
    newWin.document.write (loanHTML); 
    newWin.document.write("</body>"); 
    newWin.document.write("</html>"); 
    if(newWin.print()) { 
     newWin.close(); 
    } else { 
     newWin.close(); 
    } 
}); 

Она захватывает таблицу из страницы со списком всех элементов, а затем создает «квитанцию». Затем квитанция печатается. Это отлично работало некоторое время, теперь он печатает только первый элемент.

Я попытался следующие с абсолютно никаких результатов:

  • Использование страниц ломку после: всегда
  • Размещение квитанции в DIV с вышеприведенным правилом CSS
  • Переустановка принтеру
  • Документ по уменьшение настроек для принтера

Сумасшедшая вещь заключается в том, что она использовала для печати все элементы безупречно и теперь это не так. Я даже переустановил сценарий из резервной копии, чтобы быть уверенным.

Не знаю, куда идти отсюда. Все содержимое отображается в предварительном просмотре, но печатает только первый элемент. Настройка «Верхний и нижний колонтитулы» только ухудшает ситуацию, а не лучше.

UPDATE

Я изменил HTML отправленный на принтер, и она работает. Все еще не уверен, что он полностью действителен, но он печатает. Я буду знать, что исправить, если он прекратит печать. Спасибо за вход!

+0

Почему вы пытаетесь сделать это в JavaScript. Это не верно. –

+0

Нет выбора. Стороннее приложение. – Bubnoff

ответ

1

Единственное правдоподобное объяснение, которое я вижу, это то, что ваша переменная loanHTML пуста или не определена.

Демо: http://jsfiddle.net/waitinforatrain/bMzUt/2/

Закомментируйте var loanHTML линии и запустить снова, и вы увидите, что я имею в виду.

+0

Работает в Greasemonkey/Firefox. Это таблица, и по какой-то причине только первая строка печатает в Chrome, хотя все это отображается в предварительном просмотре. Удивление, если я должен написать все это на скрытый div на странице, прежде чем писать на страницу квитанции. – Bubnoff

+2

На самом деле, 'loanHTML', вероятно, искажен. FF и Chrome обрабатывают неверный код по-разному, а Chrome также «строит» вещи по-разному. Сохраните неисправную страницу печати на диск. Затем откройте этот файл с помощью Chrome и проверьте его (все еще). Повторяйте, пока у вас не появится файл демо-демо. Затем загрузите этот файл на http://pastebin.com/ и укажите нам его. ... Кроме того, *** точно *** как 'loanHTML' определен/установлен? –

+0

Я думаю, что вы определенно на что-то. Div извлекается изнутри таблицы, таким образом удаляя внешние теги таблицы. Я не беспокоился о том, чтобы что-то сделать, так как казалось, что это нормально ... сначала ... затем быстро забыл об этой маленькой детали. Все еще интересно, почему это сработало для начала. – Bubnoff