JavaScript + всплывающие окна?

Slam

Новичок
JavaScript + всплывающие окна?

Как можно открыть окно с содержимым конкретной переменной?

То есть существует переменная с каким либо контентом. Как можно открыть всплывающее окно, чтобы показать содержимое данной переменной.

Я использую шаблонизатор Smatry и на определенном этапе, генерирую страницу и вывожу ее. Необходимо реализовать возможность открытия всплывающего окна для печатной версии. Чтобы не обращаться опять к серверу для генерации сходной страницы хочу также в шаблон передать переменную с содержимым всплывающего окна.
 

Фанат

oncle terrible
Команда форума
то есть, ты хочешь каждый раз при загрузке страницы - независимо от того, будет кто-то ее печатать, или нет, передавать текст для печати.
ты хорошо подумал?

так ли уж ужасно "обращаться опять к серверу ", как тебе кажется?
 

Slam

Новичок
В данном случае да!
Дело в том, что переменные, которые используются для формирования контента уничтожаются. Ну, так нужно.
Поэтому хотелось бы сделать именно таким способом!
 

AmdY

Пью пиво
Команда форума
всплывающее окно знаешь как реализовать, знаешь какие параметры передаются?
 

Slam

Новичок
window.open( [sURL] [, sName] [, sFeatures] [, bReplace]

Можно так!

<a href="#" onclick="window.open('url', 'param1', 'height=150px,width=250px,toolbar=no,menubar=no,location=no,status=yes,directories=no,xcenter=yes,ycenter=yes,dependent=yes,resizable=1,scrollbars=1'); return false;">Print</a>

Но это с заданным URL.

А как и куда переменную передать?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Slam

{capture}???
http://smarty.php.net/manual/ru/language.builtin.functions.php#language.function.capture

-~{}~ 17.06.07 00:09:

Чтобы не обращаться опять к серверу для генерации сходной страницы хочу также в шаблон передать переменную с содержимым всплывающего окна.
Вариант с {capture} "раздует" документ.

Я бы юзал
getElementById
 

Slam

Новичок
Mr_Max,
Использовать {capture} здесь не очень удобно, потому что его нужно будет использовать в вызываемом окне.

А как готовую переменную "запихнуть" в окно?

AmdY,

Второй параметр ( в нашем случае это sName) - имя нового окна.
Используя имя в качестве значения атрибута TARGET команды <A> или <FORM>, можно вывести документы в это окно.

Но тогда документ нужно генерировать опять?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
w = window.open....
w.document.write('текст');

-~{}~ 17.06.07 01:33:

Использовать {capture} здесь не очень удобно
Его неудобно использовать лишь потому, что документ в данном случае "раздуется" ровно на величину контента, который нужно "сдублировать" для печатной версии. Если контента очень мало - то на это можно не обращать внимания...

Избежать избыточного "дублирования" контента Вам поможет джаваскриптовый getElementById

его нужно будет использовать в вызываемом окне.
Если контента много то так делать НЕ нужно
w.document.write({$smarty.capture.capture_name|escape:javascript});
 

iamFake

Mind Of Liberty
можно скопировать в новое окно тотже самый контент, что и в основном окне и с помощью CSS предать ему "печатный" вид, закачав в новое окно стили для печати... т.е. контент один а стилей 2, обычный и "для печати", и вместе с копированием контента в новое окно, скопировать и стили "для печати"... стили много не займут, а проблема с дублированием контента отпадет...
 

Crazy

Developer
...и остается главный вопрос: зачем уродоваться, если можно просто правильно прописать печатные стили в самой странице...
 

Slam

Новичок
Сделал вот таким образом:
Код:
function print_window()
{
w = window.open('', 'cart', 'height=400px,width=400px,toolbar=no,menubar=no,location=no,status=yes,directories=no,xcenter=yes,ycenter=yes,dependent=yes,resizable=1,scrollbars=1');
content = document.getElementById('account');
w.document.write(content.innerHTML);  		
}
Но есть маленькая проблема! Окно появляется с необходимым содержимым, но прогресс бар в строке состояния окна , как буд-то что-то догружает и так постоянно!
И это справедливо для Mozilla Firefox. Ни в IE6 ни в Opera 9 такого не наблюдается!

Далее, если добавить строку кода для печати:
Код:
if (typeof(w.print) != 'undefined') w.print();
Окно «Печать» в браузерах IE6 и Opera 9 не появляется вовсе. В Firefox, появляется всплывающее окно, но без содержимого и тут же появляется окно «Печать». Если закрыть стандартное окно «Печать», то теперь можно будет увидеть конвент во всплывающем окне.

Если же добавить такую строку кода для печати:
Код:
if (typeof(window.print) != 'undefined') window.print();
Проблема с содержимым в FireFox не изчезает, и во всех браузерах оно уходит, как-бы на задний план, но не окна печати и основного окна браузера и его вообще не видно.

Вот с такими проблемами я столкнулся.
Прошу поделиться своїми размышлениями по данному вопросу.
 
Сверху