#google-chrome #printing
#google-chrome #печать
Вопрос:
Я разработчик веб-приложения.
Chrome правильно отображает мои веб-страницы, созданные на Javascript и AJAX, но когда я пытаюсь их распечатать (с помощью собственной функции) Я получаю пустую страницу.
Печать отлично работает в других браузерах.
Я пробовал печатать страницы, созданные на стороне сервера, с помощью Chrome, и они печатаются нормально.
Что может быть не так на веб-страницах моего веб-приложения? Я думаю, проблема в том, что эти страницы динамически генерируются Javascript и AJAX.
Я говорю это, потому что я только что узнал, что я даже не могу правильно сохранить эти страницы в Chrome (весь динамический HTML не отображается).
Я в Google Chrome 13.0.782.112.
Как я могу отладить и устранить эту проблему? Есть ли какой-либо обходной путь? Кому-нибудь удается печатать динамический контент с помощью Google Chrome?
Эта проблема сводит меня с ума!
PS: некоторые из моих пользователей сообщают о той же проблеме в Safari 🙁
ОБНОВЛЕНИЕ: обновлен до Chrome 14.0.835.202, но проблема все еще существует…
Комментарии:
1. Не могли бы вы опубликовать какой-нибудь код, чтобы мы могли его просмотреть?
2. Я только что сделал тестовую скрипку , и у меня все работает нормально. Вы используете другой код или что-то в этом роде?
Ответ №1:
У меня была точно такая же проблема, хотя и не в Chrome (хотя я на самом деле не тестировал с Chrome). В некоторых браузерах (и я не могу вспомнить, в каких из них, но это было либо в IE, либо в FF), любой контент, добавленный в DOM с помощью JavaScript, не печатается. На самом деле печатается исходный документ, который был отправлен в браузер.
Я успешно решил это, используя следующую функцию JavaScript:
function docw()
{
var doct = "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">";
document.write(doct document.getElementsByTagName('html')[0].innerHTML);
}
Это вызывается, когда обработка страницы JavaScript завершена. Он фактически считывает весь DOM, а затем перезаписывает весь документ обратно в себя с помощью document.write
. Теперь это позволяет печатать для моего конкретного проекта как в IE, так и в FireFox, хотя я почти уверен, что один из них уже работал в первую очередь, а другой — нет (не могу вспомнить, какой из памяти, и это не тот проект, который я могу вытащить для тестирования в данный момент). Решит ли это проблему в Chrome, я не знаю, но попробовать стоит.
Редактировать Ужасно жаль, но я полный плебей. Я просто перечитал свои старые комментарии, и это решение не имело никакого отношения к печати; на самом деле это было для устранения проблемы, из-за которой при сохранении в файл сохранялся только исходный обслуживаемый документ. Тем не менее, я все еще задаюсь вопросом, стоит ли это того.
Комментарии:
1. Ты лучший, Тревор! Потрясающе! Как я счастлив! Пожалуйста, все проголосуйте за этот ответ: мой вопрос был довольно расплывчатым, и я не показал никакого кода, но его фрагмент был полностью на месте!
2. Ха, показывает, что иногда стоит рисковать! Рад, что это помогло!
Ответ №2:
Это помогло мне решить связанную проблему — как просмотреть / сохранить сам динамически сгенерированный HTML. Я придумал следующий букмарклет.
javascript:(function(){document.write('<pre>' (document.getElementsByTagName('html')[0].innerHTML.replace(/amp;/g,'amp;amp;').replace(/</g,'amp;<').replace(/>/g,'amp;>')) '</pre>')})()
Я запускаю это и «выбираю все» / копирую, а затем (в Linux) выполняю «xclip -out», чтобы направить большой объем данных буфера обмена в файл.
Ответ №3:
Ответ Тревора полностью сработал для меня — с помощью jquery я просто сделал что-то вроде
$("html").html $("html").html()
сработало отлично