Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Печать фрейма из другого фрейма


Автор: aazon 7.7.2006, 17:22
Доброго времени суток!
Есть такая задача: есть фреймсет с двумя фреймами (1.html, 2.html). 
Код фреймсета:
Код

<HTML>
<HEAD></HEAD>
<FRAMESET COLS="*,200">
    <FRAME SRC="1.html" NAME="content">
    <FRAME SRC="2.html" NAME="menu">
</FRAMESET>
</HTML>


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

<HTML>
<HEAD></HEAD>
<BODY>
this is 2.html<BR>
<INPUT TYPE="button" onclick="parent.frames['content'].print()">
</BODY>
</HTML>

Так вот, не все так просто. При нажатии на кнопку появляется окно печати, а потом действия скрипта зависят от броузера. В лисе все Ок, печатается левый фрейм. В осле почему-то печатается только правый фрейм, а в опере оба фрейма... Если же поместить кнопку "Печать" в левый фрейм и при нажатии печатать самого себя, то все работает, по крайней мере в осле точно. Никто не знает, как без применения css и без открытия новых окон добиться результата, имея кнопку в правом фрейме? 

Автор: 12345c 9.7.2006, 14:48
Вызовите программно скрипт из нужного фрейма. 

Автор: aazon 10.7.2006, 14:23
Цитата(12345c @ 9.7.2006,  14:48)
Вызовите программно скрипт из нужного фрейма.

Пробовал создавать ф-ю в левом фрейме и вызывать ее при нажатии кнопки из правого фрейма:
Код

function print_me()// эта ф-я в левом фрейме
{
window.print();
}

Код кнопки из правого фрейма:
Код

<input type='button' onclick="top.frames['content'].print_me()">


Результат тот же, что и раньше. Может быть ты имел что-то другое под программным вызовом?  

Автор: Messenger 10.7.2006, 15:23
Hичего неприходит на ум,разве что попробывать window.focus()   перед window.print(). 

Автор: 12345c 10.7.2006, 16:20
Цитата(aazon @  10.7.2006,  14:23 Найти цитируемый пост)
Результат тот же, что и раньше. Может быть ты имел что-то другое под программным вызовом? 
Именно это. Тогда другой вариант - чтобы событие начало обрабатываться из нужного фрейма. Как там вызывают пользовательское событие?

Да, focus() мог бы помочь, только подождать, чтобы он совершился.

Код
top.frames['content'].focus();
setTimeout('top.frames.content.print_me',100);
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)