2010-04-03 3 views
0

Содержимое следующего div выводится динамически: i. Таблица динамически добавляется в этот div с помощью некоторой кнопки.Печать содержимого div

Мой вопрос заключается в том, чтобы напечатать содержимое этого DIV (window.print), а не другие вещи на странице

<div id="newdiv" name="newdiv"></div> 

Спасибо.

+0

@Hulk Как я уже сказал в другом вопросе, пожалуйста, оставьте отзыв о неудовлетворительных ответах здесь вместо того, чтобы открыть новый. –

+0

Пекка без обид, я отмечаю это как ответ. – Hulk

+0

не было принято никакого нарушения, если ответ вам не помог, вы можете его отменить. Если решение не сработало, просто сообщите об этом, и вы обычно получите новые варианты. –

ответ

7

Две идеи:

  • Ввести таблицу стилей для печати

    <link rel="stylesheet" href="print.css" type="text/css" media="print" /> 
    

    , который даст каждому элементу display: none за исключением newdiv:

    * { display: none } /* This should hide all elements */ 
    div#newdiv { display: block } /* This should make newdiv visible again */ 
    

    Я не могу проверить это прямо сейчас но я не понимаю, почему это не сработает.

  • Скопируйте содержимое div во вновь созданный элемент iframe с помощью JavaScript и распечатайте его.

    Много препятствий на дороге в этом направлении. Сначала я попытаюсь использовать CSS.

+0

Невозможно сделать что-то подобное в jQuery $ ('# newdiv'). Val() и использовать window.print – Hulk

+0

Вы можете пройти через все элементы в jQuery, сделать их невидимыми, кроме newdiv, а затем вызвать ' window.print() 'Я полагаю. Будет иметь тот же эффект, что и таблица стилей, с той разницей, что таблица стилей работает с отключенным JS. На самом деле я не вижу в этом преимущества. Насколько я знаю, вы не можете отправлять куски HTML в window.print(). –

+0

+1. Таблицы стилей могут быть отключены и включены, когда вам это нужно. –

4

Clever мышление Пекка, но он не работает совсем так, после использования глобального отображения: никто не будет иметь для повторного каждый отдельного элемента, который должен отображаться, в том числе всех родительских элементов. Лучшим способом было бы скрыть все элементы, которые не должны печататься, хорошая новость заключается в том, что вам нужно только скрыть родительский элемент, и все в нем будет скрыто.

Существует кстати нет необходимости в дополнительной таблице стилей, блок в существующем листе может быть использована (он должен быть помещен в конце последнего листа):

@media print{ 
    .noprint{ 
     display:none; 
    } 
} 

теперь блок могут быть скрыты от печати, просто предоставив контейнеру класс noprint.

+0

@eBusiness вы делаете отличную точку, если документ очень сложный. +1. –

Смежные вопросы