10.03.2009, 23:44
|
Новичок на форуме
|
|
Регистрация: 10.03.2009
Сообщений: 4
|
|
Печать невидимых блоков
На странице есть некоторые невидимые блоки текста. При клике, на соответствующие заголовки - они открываются. ДЖовольно распространенный прием.
У невидимых блоков изначально стоит display:block, чтобы в случае отключенных скриптов их было видно.
При загрузке страницы запускается скрипт, который устанавливает им display:none. Затем при клике на соответствующий блоку заголовок происходит переключение свойства display.
Задача: как сделать так, чтобы при печати у этих блоков также устанавливалось display:block, т.е. чтоб они печатались на принтере.
Речь вот об этом сайте:
http://rmc-center.com/seminars/themes.html
|
|
10.03.2009, 23:56
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Стили для блоков
Код:
|
#js .block {
display: none;
}
@media print {
#js .block {
display: block;
}
} |
В начале страницы (где-нибудь в head) добавить код
document.documentElement.id = 'js';
Теперь при отключенных скриптах блоки будут показаны, при включенных -- скрыты, причем без мигания. При печати блоки будут видны. Для показа блока style.display = 'block', для скрытия style.display = ''.
|
|
10.03.2009, 23:57
|
Аспирант
|
|
Регистрация: 15.07.2008
Сообщений: 31
|
|
Для Вашего варианта лучше всего сделать с помощью css
Сделать два разных файла, один для просмотра, второй для печати.
<link media="screen" href="for_view.css" type="text/css" rel="stylesheet"/>
<link media="print" href="for_print.css" type="text/css" rel="stylesheet"/>
В for_print.css прописать по айдишникам всем вашим div - display:block
---------------
Ну да. Я немного затормозил.
|
|
11.03.2009, 00:40
|
Новичок на форуме
|
|
Регистрация: 10.03.2009
Сообщений: 4
|
|
Простите, я пока еще чайник, но первый совет как-то совсем непонятен.
Что касается второго, то у меня, разумеется есть два разных CSS для печати и для экрана. Но поскольку на body onload срабатывает скрипт, который отключает "видимость" невидимых блоков, то на печать они все равно не выводятся.
Можно ли сделать так чтобы какой-то скрипт запускался при выводе на печать и устанавливал соответствующее свойство.
Блоков много и этот прием применяется на нескольких страницах. Блоки выбираются по классу (когда нужно свойство установить скопом для всех) или по id - когда нужно включить/выключить конкретный блок.
|
|
11.03.2009, 02:40
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Сообщение от mixeeff
|
Можно ли сделать так чтобы какой-то скрипт запускался при выводе на печать и устанавливал соответствующее свойство.
|
Нет, это нужно делать через CSS. Скрипт, который срабатывает по onload, не должен срабатывать, когда страницу печатают, или я что-то не понял?
|
|
11.03.2009, 10:50
|
Новичок на форуме
|
|
Регистрация: 10.03.2009
Сообщений: 4
|
|
Сообщение от Андрей Параничев
|
Нет, это нужно делать через CSS. Скрипт, который срабатывает по onload, не должен срабатывать, когда страницу печатают, или я что-то не понял?
|
Через CSS понятно как сделать. В таблице стилей для печати у спрятанных блоков стоит display:block, но получается что скрипт, запускающийся по onload срабатывает и при печати тоже.
Последний раз редактировалось mixeeff, 11.03.2009 в 10:55.
|
|
11.03.2009, 11:30
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Он не срабатывает при печати, он срабатывает при загрузке страницы. Печатается то, что в данный момент на странице, а блоки в момент печати принудительно скрыты. Втыкайте в то, что я написал выше.
|
|
11.03.2009, 11:41
|
Новичок на форуме
|
|
Регистрация: 10.03.2009
Сообщений: 4
|
|
Сообщение от Kolyaj
|
Он не срабатывает при печати, он срабатывает при загрузке страницы. Печатается то, что в данный момент на странице, а блоки в момент печати принудительно скрыты. Втыкайте в то, что я написал выше.
|
Спасибо, в то что вы написали выше я воткнул. В итоге получается так что те блоки которые пользователь раскрыл печатаются, а те что нет - нет, что в общем то наверно правильно. Пользователь откроет интересующие его блоеки и напечатает, а заставлять его печатать все неправильно.
Так что, как говорится, всем спасибо!
|
|
|
|