Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.03.2009, 23:44
Новичок на форуме
Отправить личное сообщение для mixeeff Посмотреть профиль Найти все сообщения от mixeeff
 
Регистрация: 10.03.2009
Сообщений: 4

Печать невидимых блоков
На странице есть некоторые невидимые блоки текста. При клике, на соответствующие заголовки - они открываются. ДЖовольно распространенный прием.
У невидимых блоков изначально стоит display:block, чтобы в случае отключенных скриптов их было видно.
При загрузке страницы запускается скрипт, который устанавливает им display:none. Затем при клике на соответствующий блоку заголовок происходит переключение свойства display.
Задача: как сделать так, чтобы при печати у этих блоков также устанавливалось display:block, т.е. чтоб они печатались на принтере.
Речь вот об этом сайте:
http://rmc-center.com/seminars/themes.html
Ответить с цитированием
  #2 (permalink)  
Старый 10.03.2009, 23:56
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 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 = ''.
Ответить с цитированием
  #3 (permalink)  
Старый 10.03.2009, 23:57
Аспирант
Отправить личное сообщение для Onis Посмотреть профиль Найти все сообщения от Onis
 
Регистрация: 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

---------------
Ну да. Я немного затормозил.
Ответить с цитированием
  #4 (permalink)  
Старый 11.03.2009, 00:40
Новичок на форуме
Отправить личное сообщение для mixeeff Посмотреть профиль Найти все сообщения от mixeeff
 
Регистрация: 10.03.2009
Сообщений: 4

Простите, я пока еще чайник, но первый совет как-то совсем непонятен.
Что касается второго, то у меня, разумеется есть два разных CSS для печати и для экрана. Но поскольку на body onload срабатывает скрипт, который отключает "видимость" невидимых блоков, то на печать они все равно не выводятся.
Можно ли сделать так чтобы какой-то скрипт запускался при выводе на печать и устанавливал соответствующее свойство.
Блоков много и этот прием применяется на нескольких страницах. Блоки выбираются по классу (когда нужно свойство установить скопом для всех) или по id - когда нужно включить/выключить конкретный блок.
Ответить с цитированием
  #5 (permalink)  
Старый 11.03.2009, 02:40
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Сообщение от mixeeff
Можно ли сделать так чтобы какой-то скрипт запускался при выводе на печать и устанавливал соответствующее свойство.
Нет, это нужно делать через CSS. Скрипт, который срабатывает по onload, не должен срабатывать, когда страницу печатают, или я что-то не понял?
Ответить с цитированием
  #6 (permalink)  
Старый 11.03.2009, 10:50
Новичок на форуме
Отправить личное сообщение для mixeeff Посмотреть профиль Найти все сообщения от mixeeff
 
Регистрация: 10.03.2009
Сообщений: 4

Сообщение от Андрей Параничев Посмотреть сообщение
Нет, это нужно делать через CSS. Скрипт, который срабатывает по onload, не должен срабатывать, когда страницу печатают, или я что-то не понял?
Через CSS понятно как сделать. В таблице стилей для печати у спрятанных блоков стоит display:block, но получается что скрипт, запускающийся по onload срабатывает и при печати тоже.

Последний раз редактировалось mixeeff, 11.03.2009 в 10:55.
Ответить с цитированием
  #7 (permalink)  
Старый 11.03.2009, 11:30
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Он не срабатывает при печати, он срабатывает при загрузке страницы. Печатается то, что в данный момент на странице, а блоки в момент печати принудительно скрыты. Втыкайте в то, что я написал выше.
Ответить с цитированием
  #8 (permalink)  
Старый 11.03.2009, 11:41
Новичок на форуме
Отправить личное сообщение для mixeeff Посмотреть профиль Найти все сообщения от mixeeff
 
Регистрация: 10.03.2009
Сообщений: 4

Сообщение от Kolyaj Посмотреть сообщение
Он не срабатывает при печати, он срабатывает при загрузке страницы. Печатается то, что в данный момент на странице, а блоки в момент печати принудительно скрыты. Втыкайте в то, что я написал выше.
Спасибо, в то что вы написали выше я воткнул. В итоге получается так что те блоки которые пользователь раскрыл печатаются, а те что нет - нет, что в общем то наверно правильно. Пользователь откроет интересующие его блоеки и напечатает, а заставлять его печатать все неправильно.
Так что, как говорится, всем спасибо!
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать HTML документа SwaD Общие вопросы Javascript 33 22.10.2015 14:25
Mootools | Тени для блоков Dr.Holerik Библиотеки/Тулкиты/Фреймворки 0 04.12.2008 12:42
печать фрэйма psychos Opera, Safari и др. 9 15.10.2008 14:24
Печать страницы p2t Events/DOM/Window 1 06.05.2008 17:57
Копирование блоков страницы(или целиком) Phoenix Общие вопросы Javascript 30 24.03.2008 23:46