Учебный курс Введение в JavaScript и CGI Лекция 2 Управление окнами кандидат технических наук Павел Брониславович Храмцов paul@kiae.su Иерархия классов JavaScript Window self, parent, top Самый старший класс JavaScript navigator plugins[] mimeTypes[] frames[] location history document forms[] Массивы документа anchors[] links[] images[] applets embeds[] layers[] Packages[] Встроенные массивы браузера (программы и поддерживаемые MIME-типы) Фреймы окна – сами окна Location – URL документа История визитов elements[] Элементы формы – -Buttons одни из -Checkbox основных -FileUpload объектов -Hidden -Password программ -Radio JavaScript -Reset -Select -Submit -Text -textarea document Вложенные документы 2 Пример <script> document.write(window.location); document.write("<br>"); document.write(document.location); </script> Результат исполнения http://webclass.polyn.kiae.su/classes/jsi/objects.htm http://webclass.polyn.kiae.su/classes/jsi/objects.htm 3 Пример <script> w=toString(window.location); d=toString(document.location); h=window.location.href; document.write(w.length); document.write(d.length); document.write(h.length); </script> Результат исполнения window.location - 8 document.location - 8 window.location.href - 53 4 Объекты класса window Свойства Методы •status •location •history •navigator •open •close •focus События Событий нет 5 Window: поле статуса 6 Window: поле статуса Программируем status: <a href=#status onMouseover="window.status='Jump to status description';return true;" onMouseout="window.status='Status bar programming';return true;">window.status</a> Программируем DefaultStatus: <body onLoad="window.defaultStatus='Status bar programming';"> 7 Программируем location 8 Программируем location Свойства location: http://kuku.ru:80/r/dir/page?search#mark Методы location: window.location.reload(true); window.location.replace('#top'); 9 История посещений страниц <form> <input type=button value=Назад onClick=history.back()> </form> 10 Тип браузера: Объект Navigator <form><input type=button value="Тип навигатора" onClick="window.alert(window.navigator.userAgent);"> </form> Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506) <script> if(navigator.mimeTypes['image/gif']!=null) document.write("Ваш браузер поддерживает GIF<br>"); if(navigator.mimeTypes['image/kuku']==null) document.write("Ваш браузер не поддерживает KUKU"); </script> 11 Методы управления окнами alert() confirm() prompt() open() close() focus() setTimeout() clearTimeout() scroll() blur() 12 Метод alert <a href="javascript:window.alert('Кара-у-у-ул!!!')">Во дворе злая собака</a> 13 Метод confirm <form> <input type=button value="Что вы знаете о JavaScript?“ onClick="if(window.confirm('Знаю все')==true) { document.forms[0].elements[1].value='Проверка на вшивость';} else {document.forms[0].elements[1].value='Знал бы - не читал';};"><br> <input size=30> </form> 14 Метод prompt <form> <input type=button value="Открыть окно ввода" onClick= "document.forms[1].elements[1].value= window.prompt('Введите чего-нибудь Христа ради!');"> <input size=30> </form> 15 Метод open open("URL","window_name","param,...",replace); где URL - страница, которая будет загружена в новое окно, window_name - имя окна, которое можно использовать в атрибуте target в контейнерах A и FORM, replace - позволяет при открытии окна управлять записью в массив history 16 Управление окнами параметр назначение width ширина окна в пикселях height высота окна в пикселях toolbar создает окно с системными кнопками браузера location создает окно с полем location directories создает окно с меню предпочтений пользователя status создает окно с полем статуса status menubar создает окно с меню scrollbar создает окно с линейками прокрутки resizable создает окно, размер которого можно будет изменять после создания 17 Метод close window.close(); self.close(); window.opener.close(); id=window.open(); ... id.close(); 18 Метод focus function myfocus(a) { id = window.open("","example","scrollbars,width=300,height=200"); if(a==1) { id.document.open(); id.document.write("<center>Открыли окно в первый раз"); } if(a==2) { id.document.open(); id.document.write("<center>Открыли окно во второй раз"); } if(a==3) { id.focus(); id.document.open(); id.document.write("<center>Открыли окно во второй раз"); } id.document.write("<form><input type=button onClick='window.close();' value='Закрыть окно'></center>"); id.document.close(); } 19 Метод setTimeout idt = setTimeout("JavaScript_код",Time); var flag=0;var idp=null; function myclock() { if (flag==1) { d = new Date(); window.document.c.f.value = d.getHours()+":"+d.getMinutes()+":"+d.getSeconds(); } idp=setTimeout("myclock();",500); } function flagss() { if(flag==0) flag=1; else flag=0; } ... <form name=c> Текущее время:<input name=f size=8><input type=button value="Start/Stop" onClick=flagss()></form> 20 Метод clearTimeout var idp1 = null; function start() { d = new Date(); window.document.c1.f1.value = d.getHours()+":"+d.getMinutes()+":"+d.getSeconds(); idp1=setTimeout("start();",500); } function stop() { clearTimeout(idp1);idp1=null; } ... <form name=c1> Текущее время:<input name=f1 size=8> <input type=button value="Start" onClick="if(idp1==null)start();"> <input type=button value="Stop" onClick="if(idp1!=null)stop();"> </form> 21 Фреймы Именование фреймов top.frames[1].images[1].src="kuku.gif"; или top.right.images[1].src="kuku.gif"; Передача фокуса window.open("./framer.htm","mytop"); self.top.frames[2].document.open(); self.top.frames[2].document.close(); 22 Фреймы top (_parent) <html> <head> </head> <frameset cols="50%,*"> <frame name=left src=./left.htm> <frame name=right src=./right.htm> </frameset> </html> top (_parent) left left right right 23 Фреймы top (_parent) <frameset cols="50%,*"> <frame name=left src=./left.htm> <frameset rows="50%,*"> <frame name=top src=./top.htm> <frame name=bottom src=./bottom.htm> </frameset> </frameset> left top (_parent) top bottom top left bottom 24 Фреймы Первый документ: top (_parent) <html><head></head> <frameset cols="50%,*"> <frame name=left src=./left.htm> <frame name=right src=./right.htm> </frameset> </html> Второй документ (right.htm): <html><head></head> <frameset rows="50%,*"> <frame name=top src=./top.htm> <frame name=bottom src=./bottom.htm> </frameset> </html> left right top bottom 25 Именование фреймов <html> <head> ... </head> <frameset cols="20%,*"> <frame name=left src=frame1.htm> <frame name=right src=frame2.htm> </frameset> </html> top.frames[1].images[1].src="kuku.gif"; или top.right.images[1].src="kuku.gif"; 26 Именование фреймов <frameset rows="20,*,20"> <frame name=top src=top.htm> <frameset cols="50,*,50"> <frame name=left src=left.htm> <frame name=center src=center.htm> <frame name=right src=right.htm> </frameset> <frame name=bottom src=bottom.htm> </frameset> frame[0] (top) frame[1] (left) frame[2] (center) frame[3] (right) frame[4] (bottom) 27 Именование фреймов <frameset cols="20,*,20"> <frame name=left src=top.htm> <frameset rows="50,*,50"> <frame name=top src=left.htm> <frame name=center src=center.htm> <frame name=bottom src=right.htm> </frameset> <frame name=right src=bottom.htm> </frameset> frame[1] (top) frame[0] (left) frame[2] (center) frame[1] (right) frame[1] (bottom) 28 Передача фокуса в фрейм function load() { if(self.document.f.s.options[document.f.s.selectedIndex].text=="top") { document.f.target = "mytop"; self.top.frames[2].document.open(); self.top.frames[2].document.close(); else { document.f.target = "mybottom"; self.top.frames[1].document.open(); self.top.frames[1].document.close(); } return true; } 29 Передача фокуса в фрейм function load() { if(self.document.f.s.options[document.f.s.selectedIndex].text=="top") { window.open("./framer.htm","mytop"); self.top.frames[2].document.open(); self.top.frames[2].document.close(); } else { window.open("./framer.htm","mybottom"); self.top.frames[1].document.open(); self.top.frames[1].document.close(); } return false; } 30