Как лучше всего распечатать содержимое DIV?
javascript
jquery
html
printing
usertest
источник
источник
Ответы:
Небольшие изменения по сравнению с более ранней версией - протестировано на CHROME
источник
mywindow.document.write(data);
Добавить это:mywindow.document.write('<script type="text/javascript">$(window).load(function() { window.print(); window.close(); });</script>');
И удалить:mywindow.print();
иmywindow.close();
Я думаю, что есть лучшее решение. Сделайте так, чтобы ваш div печатал на весь документ, но только когда он напечатан:
источник
Хотя @gabe и сказал это , если вы используете jQuery, вы можете использовать мой
printElement
плагин.Там есть образец здесь , и больше информации о плагине здесь .
Использование довольно простое, просто возьмите элемент с селектором jQuery и напечатайте его:
Я надеюсь, что это помогает!
источник
Используя Jquery, просто используйте эту функцию:
Ваша кнопка печати будет выглядеть так:
Изменить: Если у вас есть данные формы, которые вам нужно сохранить, клон не скопирует их, поэтому вам просто нужно будет собрать все данные формы и заменить их после восстановления, как показано ниже:
источник
el
, ужасен, тем более что вы используете jQ. Гораздо лучше просто передатьselector
и избавиться от жестко закодированного#
el
. Я думаю, что команда печати отправляется, когда тело восстанавливается.Отсюда http://forums.asp.net/t/1261525.aspx
источник
Я использовал
Bill Paetzke
ответ, чтобы напечатать div, содержащий изображения, но он не работал с Google Chromeмне просто нужно было добавить эту строку,
myWindow.onload=function(){
чтобы она работала, и вот полный кодтакже, если кому-то просто нужно напечатать div с идентификатором, ему не нужно загружать jquery
вот чистый код JavaScript, чтобы сделать это
я надеюсь, что это может кому-то помочь
источник
Это распечатает
div
область, которую вы хотите, и вернет содержимое обратно, как было.printdivname
этоdiv
для печати.источник
Создайте отдельную таблицу стилей печати, которая скрывает все другие элементы, кроме содержимого, которое вы хотите распечатать. Отметьте его, используя
'media="print"
при загрузке:<link rel="stylesheet" type="text/css" media="print" href="print.css" />
Это позволяет вам иметь совершенно другую таблицу стилей, загруженную для распечаток.
Если вы хотите, чтобы диалоговое окно печати браузера отображалось для страницы, вы можете сделать это при загрузке с помощью JQuery:
$(function() { window.print(); });
или вызвал любое другое событие, которое вы хотите, например, пользователь нажимает кнопку.
источник
Я думаю, что предлагаемые решения имеют следующие недостатки:
Я улучшил решения выше. Вот кое-что, что я проверил, которое действительно хорошо работает со следующими преимуществами.
Ключевые моменты, чтобы отметить:
источник
Я создал плагин для решения этого сценария. Я был недоволен плагинами и решил сделать что-то более обширное / настраиваемое.
https://github.com/jasonday/printThis
источник
Принятое решение не работает. Chrome печатал пустую страницу, потому что не загружал изображение вовремя. Этот подход работает:
Изменить: кажется, что принятое решение было изменено после моего сообщения. Почему отрицательный голос? Это решение работает также.
источник
Я знаю, что это старый вопрос, но я решил эту проблему с помощью jQuery.
CSS
источник
Хотя ответ @BC лучше всего распечатать на одной странице.
Но для печати нескольких страниц формата A4 одновременно с помощью Ctrl + P может помочь следующее решение.
источник
источник
Вот мой плагин для печати jquery
источник
Если вы хотите использовать все стили из исходного документа (включая встроенные стили), вы можете использовать этот подход.
Реализация:
источник
Примечание. Это работает только с сайтами с поддержкой jQuery.
С этим классным трюком все очень просто. У меня это работало в браузере Google Chrome . Firefox не позволяет печатать в PDF без плагина.
Логика проста. Мы создаем новый тег сценария и прикрепляем его перед закрывающим тегом тела. Мы ввели расширение для печати jQuery в HTML. Измените myDivWithStyles с вашим собственным идентификатором тега Div. Теперь он занимается подготовкой печатного виртуального окна.
Попробуйте это на любом сайте. Только предостережение иногда хитро написанным CSS может привести к отсутствию стилей. Но мы получаем контент в большинстве случаев.
источник
В Opera попробуйте:
источник
Вот решение IFrame, которое работает для IE и Chrome:
источник
Создано что-то общее для использования на любом элементе HTML
Надеюсь это поможет.
источник
Я изменил ответ @BillPaetski, чтобы использовать querySelector, добавить необязательный CSS, удалить принудительный тег H1 и сделать заголовок необязательно указанным или извлеченным из окна. Кроме того, он больше не выполняет автоматическую печать и предоставляет доступ к внутренним компонентам, чтобы их можно было переключать в функции обертки или по своему усмотрению.
Единственными двумя частными переменными являются tmpWindow и tmpDoc, хотя я полагаю, что доступ title, css и elem может различаться, следует предположить, что все аргументы функции являются частными.
Код: Использование:источник
<input>
элементов. Как я могу использовать это, включая то, что набрал пользователь?<input>
,<select>
,<textarea>
compontents быть их значение во время выполнения. Есть альтернативы, но проблема не в этом сценарии, а в том, как работают браузеры и получаютinnerHTML
свойство документов с помощью входных данных, холста и т. Д..attr('value',)
. Я даже сделал это для textarea (добавив) и флажки (.attr('checked',)
). Мне жаль, если я не думал достаточно о том, что я спрашивал.Приведенный ниже код копирует все соответствующие узлы, на которые нацелен селектор запросов, копирует их стили, как видно на экране, поскольку многие родительские элементы, используемые для нацеливания на селекторы css, будут отсутствовать. Это вызывает некоторую задержку, если имеется много дочерних узлов с большим количеством стилей.
В идеале у вас есть готовая таблица стилей печати, но это для случаев, когда нет таблицы стилей печати, которую нужно вставить, и вы хотите печатать так, как вы видите на экране.
Если вы скопируете перечисленные ниже элементы в консоли браузера на этой странице, он напечатает все фрагменты кода на этой странице.
источник
Это действительно старый пост, но вот мое обновление, которое я сделал, используя правильный ответ. Мое решение также использовать JQuery.
Смысл этого в том, чтобы использовать правильный вид печати, включать все таблицы стилей для правильного форматирования, а также быть поддерживаемым в большинстве браузеров.
Позже вам просто нужно что-то вроде этого:
Попытайся.
источник
То же, что лучший ответ, на случай, если вам нужно напечатать изображение, как я:
Если вы хотите напечатать изображение:
источник
load
событие во всплывающем окне. Без этого вы напечатаете пустую страницу, так как изображение не загружается. =>$(popup).load(function(){ popup.focus(); popup.print(); });
Лучший способ сделать это - отправить содержимое div на сервер и открыть новое окно, где сервер может поместить это содержимое в новое окно.
Если это не вариант, вы можете попробовать использовать язык на стороне клиента, такой как javascript, чтобы скрыть все на странице, кроме этого div, а затем распечатать страницу ...
источник