Какое свойство нового окна задается параметром scrollbars
Методы объекта window
Что можно сделать с окном? Открыть (создать), закрыть (удалить), положить его поверх всех других открытых окон (передать фокус). Кроме того, можно управлять свойствами окна и свойствами подчиненных ему объектов. Сосредоточимся на простых и наиболее популярных методах управления окнами.
alert()
Метод alert() позволяет выдать окно предупреждения, имеющее единственную кнопку “OK”:
Повторите запрос!</A>
Нужно лишь иметь в виду, что сообщения выводятся системным шрифтом, следовательно, для получения предупреждений на русском языке нужна локализованная версия ОС.
confirm()
Метод confirm() позволяет задать пользователю вопрос, на который тот может ответить либо положительно (нажав кнопку “OK”), либо отрицательно (нажав кнопку “Отмена” или “Cancel”, либо просто закрыв окно запроса). В соответствии с действиями пользователя метод confirm() возвращает значение true либо false. Пример:
<INPUT TYPE=button NAME=b VALUE=”Нажмите эту кнопку”
onClick=”if(window.confirm(‘Вы знаете JavaScript?’))
document.f.b.value=’Да. Спросить еще?’;
else document.f.b.value=’Нет. Спросить еще?’;”>
</FORM>
Все ограничения для сообщений на русском языке, которые были описаны для метода alert(), справедливы и для метода confirm().
prompt()
Метод prompt() позволяет принять от пользователя cтроку текста. Синтаксис его таков:
Когда пользователь введет свой ответ (либо оставит неизменным ответ по умолчанию) и нажмет кнопку OK, метод prompt() возвратит полученную строчку в качестве значения, которое можно далее присвоить любой переменной и потом разбирать ее в JavaScript-программе.
<INPUT TYPE=button VALUE=”Открыть окно ввода”
onClick=”document.f.e.value=
window.prompt(‘Введите сообщение’,’Сюда’);”>
<INPUT SIZE=30 NAME=e>
</FORM>
window.open()
Метод open() предназначен для создания новых окон . В общем случае его синтаксис выглядит следующим образом:
Первый аргумент задает адрес страницы, загружаемой в новое окно (можно оставить пустую строку, тогда окно останется пустым). Второй аргумент задает имя окна, которое можно будет использовать в атрибуте TARGET контейнеров <A> и <FORM>. В качестве значений допустимы также зарезервированные имена _blank, _parent, _self, _top, смысл которых такой же, как у аналогичных значений атрибута TARGET. Если имя_окна совпадает с именем уже существующего окна (или фрейма), то новое окно не создается, а все последующие манипуляции с переменной myWin будут применяться к этому окну (или фрейму).
Третий аргумент есть не содержащая пробелов строка, представляющая собой список параметров и их значений, перечисленных через запятую. Указание каждого из параметров необязательно, однако значения по умолчанию могут зависеть от браузера, поэтому всегда указывайте явно те параметры, на которые рассчитываете. Возможные параметры перечислены в таблице 4.3.
Вместо значений yes и no можно использовать 1 и 0.
Последний аргумент ” заменить ” является необязательным, принимает значения true и false и означает: следует ли новый URL добавить в history в качестве нового элемента или заменить им последний элемент history.
Метод window.open() возвращает ссылку на вновь открытое окно, т.е. объект класса Window. Его можно присвоить переменной (что мы и сделали выше), с тем чтобы потом можно было управлять открытым окном (писать в него, читать из него, передавать и убирать фокус, закрывать).
Параметр | Значения | Описание |
---|---|---|
width | число | Ширина окна в пикселах (не менее 100 ) |
height | число | Высота окна в пикселах (не менее 100 ) |
left | число | Расстояние от левого края экрана до левой границы окна в пикселах |
top | число | Расстояние от верхнего края экрана до верхней границы окна в пикселах |
directories | yes / no | Наличие у окна панели папок (Netscape Navigator) |
location | yes / no | Наличие у окна поля адреса |
menubar | yes / no | Наличие у окна панели меню |
resizable | yes / no | Сможет ли пользователь менять размер окна |
scrollbars | yes / no | Наличие у окна полос прокрутки |
status | yes / no | Наличие у окна поля статуса |
toolbar | yes / no | Наличие у окна панели инструментов |
Приведем два примера открытия нового окна:
<INPUT TYPE=button VALUE=”Простое окно”
onClick=”window.open(”, ‘test1’,
‘directories=no,height=200,location=no,’+
‘menubar=no,resizable=no,scrollbars=no,’+
‘status=no,toolbar=no,width=200’);”>
<INPUT TYPE=button VALUE=”Сложное окно”
onClick=”window.open(”, ‘test2’,
‘directories=yes,height=200,location=yes,’+
‘menubar=yes,resizable=yes,scrollbars=yes,’+
‘status=yes,toolbar=yes,width=200’);”>
</FORM>
При нажатии кнопки “Простое окно” получаем окно со следующими параметрами:
- directories=no – окно без панели папок
- height=200 – высота 200 px
- location=no – поле адреса отсутствует
- menubar=no – без меню
- resizable=no – размер окна изменять нельзя
- scrollbars=no – полосы прокрутки отсутствуют
- status=no – статусная строка отсутствует
- toolbar=no – системные кнопки браузера отсутствуют
- width=200 – ширина 200 px
При нажатии кнопки “Сложное окно” получаем окно, где:
- directories=yes – окно с панелью папок
- height=200 – высота 200 px
- location=yes – поле адреса есть
- menubar=yes – меню есть
- resizable=yes – размер изменять можно
- scrollbars=yes – есть полосы прокрутки
- status=yes – статусная строка есть
- toolbar=yes – системные кнопки браузера есть
- width=200 – ширина 200 px
window.close()
Метод close() позволяет закрыть окно. Чаще всего возникает вопрос, какое из окон, собственно, следует закрыть. Если необходимо закрыть текущее, то:
self.close();
Если мы открыли окно с помощью метода window.open(), то из скрипта, работающего в новом окне, сослаться на окно-родитель можно с помощью window.opener (обратите внимание, здесь window ссылается на объект нового, созданного окна, т.к. оно использовано в скрипте, работающем в новом окне). Поэтому, если необходимо закрыть родительское окно, т.е. окно, из которого было открыто текущее, то:
Если необходимо закрыть произвольное окно, то тогда сначала нужно получить его идентификатор:
…
id.close();
Как видно из последнего примера, закрывают окно не по имени (значение атрибута TARGET тут ни при чем), а используют указатель на объект.
Источник
Главная / Интернет-технологии /
Введение в JavaScript / Тест 4
Упражнение 1:
Номер 1
Свойство window.location представляет собой …
Ответ:
 (1) URL ссылки, на которой находится указатель мыши 
 (2) строковое значение, указываюшее адрес текущей страницы 
 (3) объект, одно из свойств которого есть адрес текущей страницы 
 (4) массив адресов посещенных сайтов 
Номер 2
Свойство window.navigator представляет собой …
Ответ:
 (1) свойство, указывающее наличие панели навигации в браузере 
 (2) строковое значение, указывающее название и версию браузера 
 (3) объект, свойства которого указывают название и версию браузера 
 (4) версию браузера Netscape Navigator 
Номер 3
Свойство window.status представляет собой …
Ответ:
 (1) URL ссылки, на которой находится указатель мыши 
 (2) строку, отображаемую в строке состояния браузера 
 (3) значение true/false, обозначающее статус загрузки документа 
Упражнение 2:
Номер 1
Какое свойство нового окна задается параметром location?
Ответ:
 (1) наличие строки состояния 
 (2) URL-адрес страницы в окне 
 (3) наличие адресной строки 
Номер 2
Какое свойство нового окна задается параметром toolbar?
Ответ:
 (1) наличие панели инструментов 
 (2) наличие полосы прокрутки 
 (3) наличие строки состояния 
Номер 3
Какое свойство нового окна задается параметром scrollbars?
Ответ:
 (1) наличие панели инструментов 
 (2) наличие полосы прокрутки 
 (3) наличие строки состояния 
Упражнение 3:
Номер 1
Какие из перечисленных действий произойдут, если кликнуть по данной ссылке?
<A HREF=”1.htm” onClick=”window.open(‘2.htm’, ‘ku’, ”)”>Ссылка</A>
Ответ:
 (1) файл 1.htm откроется в новом окне 
 (2) файл 1.htm откроется в текущем окне 
 (3) файл 2.htm откроется в новом окне 
 (4) файл 2.htm откроется в текущем окне 
Номер 2
Какое из перечисленных действий произойдет, если кликнуть по данной ссылке?
<A HREF=”1.htm” onClick=”window.open(‘2.htm’, ‘ku’, ”);return false;”>Ссылка</A>
Ответ:
 (1) файл 1.htm откроется в новом окне 
 (2) файл 1.htm откроется в текущем окне 
 (3) файл 2.htm откроется в новом окне 
 (4) файл 2.htm откроется в текущем окне 
Номер 3
Какие из перечисленных действий произойдут, если кликнуть по данной ссылке?
<A HREF=”1.htm” onClick=”window.open(‘2.htm’, ‘ku’, ”);return true;”>Ссылка</A>
Ответ:
 (1) файл 1.htm откроется в новом окне 
 (2) файл 1.htm откроется в текущем окне 
 (3) файл 2.htm откроется в новом окне 
 (4) файл 2.htm откроется в текущем окне 
Упражнение 4:
Номер 1
Выберите ссылки, кликнув по которым, мы закроем текущее окно:
Ответ:
 (1) <A HREF=”” onClick=”shutdown()”>Щелкните, чтобы закрыть</A> 
 (2) <A HREF=”” onClick=”self.close()”>Щелкните, чтобы закрыть</A> 
 (3) <A HREF=”” onClick=”document.close()”>Щелкните, чтобы закрыть</A> 
 (4) <A HREF=”” onClick=”window.close()”>Щелкните, чтобы закрыть</A> 
Номер 2
Какие из команд откроют окно, содержащее полосы прокрутки и панель инструментов?
Ответ:
 (1) window.open(‘1.htm’, ‘ku’, ‘toolbar=yes,scrollbars=yes’) 
 (2) window.open(‘1.htm’, ‘ku’, ‘toolbars=yes,scrollbar=yes’) 
 (3) window.open(‘1.htm’, ‘ku’, ‘scrollbars=yes,toolbar=no’) 
 (4) window.open(‘1.htm’, ‘ku’, ‘scrollbars=yes,menubar=no,toolbar=yes’) 
 (5) window.open(‘1.htm’, ‘ku’, ‘status=yes,scrollbars=yes,toolbar=yes’) 
Упражнение 6:
Номер 1
Определите ошибку:
<A HREF=”1.htm” onClick=”window.open(‘2.htm’, ‘ku’, ‘width=300,status=0’)”>Ссылка</A>
Ответ:
 (1) ошибка создания окна: не указан параметр height 
 (2) ошибка создания окна: неправильно задан параметр status 
 (3) имя файла в атрибуте HREF должно совпадать с именем файла в window.open() 
 (4) нет ошибки 
Номер 2
Определите ошибку:
<A HREF=”1.htm” onClick=”window.open(‘2.htm’, ‘ku’,
‘status=yes,scrollbars=1,height=yes’)”>Ссылка</A>
Ответ:
 (1) ошибка создания окна: не указана ширина открываемого окна 
 (2) ошибка создания окна: недопустимое значение параметра height 
 (3) нет ошибки 
Номер 3
Определите ошибку:
<A HREF=”1.htm” onClick=”window.open(“2.htm”, “”, “location=0,menubar=yes”)”>Ссылка</A>
Ответ:
 (1) ошибка создания окна: недопустимое значение параметра location 
 (2) ошибка создания окна: не задано имя окна 
 (3) синтаксическая ошибка в аргументах метода window.open() 
 (4) нет ошибки 
Упражнение 7:
Номер 1
Что возвращает метод prompt()?
Ответ:
 (1) строку, введенную пользователем в окне запроса 
 (2) значение true/false 
 (3) ничего (т.е. undefined) 
Номер 2
Что возвращает метод confirm()?
Ответ:
 (1) строку, введенную пользователем в окне запроса 
 (2) значение true/false 
 (3) ничего (т.е. undefined) 
Номер 3
Что возвратит метод confirm(), если пользователь просто закроет окно запроса?
Ответ:
 (1) значение true 
 (2) значение false 
 (3) ничего не возвратит (т.е. undefined) 
 (4) будет выдана ошибка браузера 
Упражнение 8:
Номер 1
Что будет, если не указать параметры метода window.open()?
Ответ:
 (1) будет открыто новое пустое окно 
 (2) получим сообщение об ошибке 
 (3) отсутствие реакции 
Номер 2
Что будет, если открыть окно с именем уже существующего окна?
Ответ:
 (1) будет создано новое окно 
 (2) будет выдано сообщение об ошибке 
 (3) в новое окно загрузится пустой документ 
 (4) окно с этим именем получит фокус и будет возвращена ссылка на это окно 
Номер 3
Что возвращает метод window.open()?
Ответ:
 (1) URL-адрес страницы, открытой в новом окне 
 (2) объект класса Window, ассоциированный с открытым окном 
 (3) имя открытого окна, которое можно использовать в атрибуте TARGET ссылок 
Упражнение 9:
Номер 1
Что нужно передавать в качестве аргументов методу clearTimeout()?
Ответ:
 (1) строку, содержащую JavaScript-код, и время отсрочки в миллисекундах 
 (2) ссылку на созданный ранее поток вычислений 
 (3) ссылку на открытое ранее окно 
Номер 2
Что нужно передавать в качестве аргумента методу clearInterval()?
Ответ:
 (1) строку, содержащую JavaScript-код, и интервал отсрочки в миллисекундах 
 (2) ссылку на созданный ранее поток вычислений 
 (3) ссылку на открытое ранее окно 
Номер 3
Что делает метод setTimeout()?
Ответ:
 (1) позволяет однократно выполнить некоторый JavaScript-код с отсрочкой 
 (2) позволяет выполнять некоторый JavaScript-код с указанным периодом 
 (3) устанавливает текущее время, указанное в аргументе 
Номер 4
Что делает метод setInterval()?
Ответ:
 (1) позволяет однократно выполнить некоторый JavaScript-код с отсрочкой 
 (2) позволяет выполнять некоторый JavaScript-код с указанным периодом 
 (3) устанавливает текущее время, указанное в аргументе 
Упражнение 10:
Номер 1
Как из окна, открытого с помощью window.open(), обратиться ко 2-й форме окна-предка?
Ответ:
 (1) window.opener.forms[2] 
 (2) window.opener.forms[1] 
 (3) self.opener.forms[1] 
 (4) window.top.forms[1] 
Номер 2
Окно разделено на два фрейма с именами left и right. Как из правого фрейма обратиться к 3-й картинке левого фрейма?
Ответ:
 (1) window.left.document.images[2] 
 (2) top.document.left.images[2] 
 (3) right.left.document.images[2] 
 (4) top.left.document.images[2] 
 (5) top.frames[‘left’].document.images[2] 
 (6) parent.left.document.images[2] 
Источник
ЧАСТЬ ВТОРАЯ
15. Объект Window (продолжение)
методы open(), close()
- метод open() объекта window;
- метод open() объекта document;
- о пользе атрибута name;
- метод close().
Ну что, берём сапоги-скороходы? 43 номер? Или предпочитаете ковёр-самолёт? Вот я Вам и продемонстрировал, как не надо пользоваться методом open(). Знакомо?
Культурнее было бы сделать так (нажмите на эту ссылку и посмотрите).
Два метода open()
С помощью метода open() можно открыть новое окно. В нём может быть или уже существующий документ с указанным адресом, или документ, сгенерированный «на лету» — временное окошко, которое создаётся при вызове метода и перестаёт существовать после закрытия.
Наша «скатерть-самобранка» сгенерирована в функции с использованием заготовленной картинки. Окно сделано в стиле обычных всплывающих окон: заданного и неизменяемого размера, без меню браузера, строки состояния и т.п.
Прежде чем приступим к разбору функции, обращу Ваше внимание на то, что метод open() применяется не только к объекту window, но и к его дочернему объекту document. Но аргументы у этих методов-тёзок разные.
Метод open() объекта window
Синтаксис
[WindowVar =][window].open(“URL”, “windowNAME”, [“windowFeatures”])
Значения в квадратных скобках не обязательные.
WindowVar = — какое-либо имя переменной, на которую можно назначить метод.
window — объект window, который вызывает метод. Мы знаем, что этот «верховный» объект может быть опущен.
“URL” — адрес окна. Если мы открываем существующее окно, то указываем здесь его адрес (в кавычках). Если мы создаём окно «на лету», то ставим плейсхолдер — пустые кавычки.
“windowNAME” — уникальное имя окна. Для чего это нужно, объясню чуть ниже. Если мы не хотим задавать имя, то опять же ставим плейсхолдер в виде пустых кавычек.
“windowFeatures” — параметры окна: размер, наличие/отсутствие панели управления, строки состояния и т.д. Можно не указывать и даже пустых кавычек не ставить. Тогда окно откроется в стандартном виде браузера, как по любой ссылке.
Составляющие аргумента “windowFeatures“
Эти составляющие фактически являются свойствами создаваемого окна.
Из них вписываются только те, которые нужны. Между собой они разделяются запятыми, кавычки — одни, общие для всех. Здесь указываются не только значения, но и имена свойств, поэтому последовательность их внутри кавычек не имеет значения, а также не требуется никаких плейсхолдеров для пропущенных свойств.
Некоторые из этих свойств добавлялись в новых версиях JavaScript, какие-то, наоборот, исчезали. В разных справочниках встречаются немного разные наборы. Я постараюсь охватить все, какие сумел разыскать, но для подробного выяснения работы некоторых из них всё равно необходим Ваш эксперимент.
Все наиболее употребительные свойства я выделяю красным цветом, а неясные пока мне самому — синим.
Для следующих десяти составляющих указываются конкретные значения в пикселях:
Свойство | Значение | Описание |
width | Число | ширина окна, например: width=554. |
innerWidth | Число | ширина внутренних границ окна окна. |
outerWidth | Число | Только для Netscape и Mozilla |
height | Число | высота окна, например: height=510. |
innerHeight | Число | высота внутренних границ окна окна, аналогично innerWidth. |
outerHeight | Число | Только для Netscape и Mozilla |
left | Число | левая граница окна относительно основного окна браузера, например: left=100 (отступ от левого края на 100 пикселей). |
screenX | Число | левая граница окна относительно левого края всего экрана, независимо от положения основного окна браузера. |
top | Число | верхняя граница окна относительно основного окна браузера, например: top=0 (положение окна точно по верхнему краю). |
screenY | Число | верхняя граница окна относительно вершины всего экрана, независимо от положения основного окна браузера. |
Наиболее употребительными из них являются четыре: width, height, left и top
Для остальных используются булевы значения: yes|no, 1|0 или true|false.
Свойство | Значение | Описание |
alwaysLowered | yes|no, 1|0, true|false | Создает окно браузера, которое всегда помещается ниже других окон, независимо от того, является ли оно активным. |
alwaysRaised | yes|no, 1|0, true|false | Если значение равно yes, создает окно браузера, которое помещается выше других окон, независимо |
channel mode | yes|no, 1|0, true|false | Показывает элементы управления Channel (так написано в самоучителе Дунаева. Что это означает, пока не понял). |
copyhistory | yes|no, 1|0, true|false | Как Вы знаете, в браузерах есть стрелочки назад-вперёд, которые заполняются данными по мере Вашего блуждания по сайтам. Если открыть новое окно с данным параметром, то все данные о посещениях, которые накопились в главном окне, перейдут и в дочернее. |
dependent | yes|no, 1|0, true|false | Если значение равно yes, создает дочернее окно из текущего окна; в Windows дочернее окно в панели задач не появляется. Дочернее окно закрывается одновременно со своим родительским окном. |
directories | yes|no, 1|0, true|false | Только для Netscape и Mozilla |
fullscreen | yes|no, 1|0, true|false | разворачивает окно на весь экран |
location | yes|no, 1|0, true|false | наличие или отсутствие текстового поля для ввода интернет-адреса (находится наверху, там же, где тулбар). |
menubar | yes|no, 1|0, true|false | наличие или отсутствие меню («файл», «правка» и т.д.). |
resizeable | yes|no, 1|0, true|false | включить/отключить возможность менять размеры окна мышкой. |
scrollbars | yes|no, 1|0, true|false | наличие или отсутствие полос прокрутки. |
status | yes|no, 1|0, true|false | наличие или отсутствие строки состояния (серая полоска в самом низу окна браузера). |
toolbar | yes|no, 1|0, true|false | наличие или отсутствие тулбара, то есть кнопок с инструментами. Например, окно без тулбара можно определить как toolbar=no, toolbar=0 или toolbar=false. |
z-lock | yes|no, 1|0, true|false | Создает новое окно браузера, которое не всплывает поверх других окон при помещении в фокус. |
Теперь можете ещё раз нажать на нашу ссылку и исследовать «скатерть-самобранку». Там все булевы параметры по нулям.
Метод open() объекта document
Если мы создаём окно «на лету» — то есть в аргументе “URL” стоят пустые кавычки, мы должны указать, что же всё-таки будет содержаться в нашем окне.
Всё содержимое (текст, картинки и пр.) указывается в аргументе метода document.open().
Синтаксис
document.open ([“mimeType”])
Аргумент [“mimeType“] не обязателен. То есть если мы ничего не укажем, окно всё равно откроется. Но — пустое. Если же мы хотим открыть окно с содержимым, то в этом аргументе надо указать для него код HTML в виде строки, как мы это делали в методе document.write(). И точно так же нельзя разбивать строку.
Если задать для нового окна переменную, то можно использовать document.open() без аргумента, а потом последовательно записать в документ данные, многократно используя document.write():
function openwindow(wd,ht) {
var myWin, name, param;
param = “width=” + wd + “,“;
param = param + “height=” + ht + “,“;
param = param + “top=0,“;
param = param + “left=0,“;
param = param + “toolbar=0,“;
param = param + “status=0,“;
param = param + “menubar=0,“;
param = param + “location=0,“;
param = param + “scrollbars=0,“;
param = param + “resizable=0,“;
myWin=window.open(“”, name, param);
myWin.document.open()
myWin.document.write(“<html><head><title>Название документа</title><style type=’text/css’>p {font-family: Verdana; color: #400000; text-align: center; margin: 3px 6px 3px 6px; font-size: 80%;}</style></head>“);
myWin.document.write(“<body>“);
myWin.document.write(“…..”);
myWin.document.write(“…..”);
myWin.document.write(“…..”);
myWin.document.write(“</body></html>“);
myWin.document.close();
}
В этом коде применён также способ наращивания значения переменной, вообще очень характерный для любого программирования и очень удобный:
param = param + “top=0,“;
param = param + “left=0,“;
param = param + “toolbar=0,“;
param = param + “status=0,“;
param = param + “menubar=0,“;
param = param + “location=0,“;
param = param + “scrollbars=0,“;
param = param + “resizable=0,“;
Или совсем кратко:
param += “top=0,“;
param += “left=0,“;
param += “toolbar=0,“;
param += “status=0,“;
param += “menubar=0,“;
param += “location=0,“;
param += “scrollbars=0,“;
param += “resizable=0,“;
Можете взять этот приём на вооружение.
Зачем нужен аргумент name
Действительно, зачем? Это может показаться непонятным, потому что никаких параметров для создания окна он не несёт. Но представим себе такую ситуацию: у нас есть фотоальбом с фотографиями разных размеров, и мы хотим, чтобы по клику на маленькой превьюшке открывалось окно с большой картинкой, заданное строго по размерам этой картинки. А размеры у них, как мы уже договорились, разные. Если пользователь смотрит их по очереди, каждый раз закрывая предыдущую, то никаких проблем не наблюдается. Но, предположим, он захотел открыть сразу две больших картинки, чтобы их сравнить. Вот тут-то может случиться неприятность: новая картинка откроется в окне такого же размера, как и предыдущая, хотя реальный размер фотки совсем другой.
Всё это произойдёт, если мы пренебрегли непонятным аргументом name (дескать, ну его, и без того голова пухнет, поставлю кавычки, и ладно). Пока не закрыто предыдущее окно, его параметры будут находиться в памяти функции при открытии нового окна… если у него нет собственного имени. Если же это имя есть, то функция автоматически переключится на те параметры, которые связаны с этим именем. И картинка откроется правильно.
Так что пользуйтесь этим чудесным аргументом.
Два метода close()
Метод close() также есть и у окна, и у документа. В приведённом выше скрипте мы использовали этот метод для документа, чтобы освободить память компьютера.
Вообще метод close() используется не слишком часто, потому что закрыть окно всегда можно с помощью крестика в правом верхнем углу. Окна без верхней строки заголовка создавать нашими средствами нельзя, а тот всплывающий мусор, которым наводнён интернет, часто изготавливается с помощью flash, где есть свой язык программирования — ActionScript.
Давайте, всё же, попробуем написать закрытие всплывающего окна, допустим, кнопкой из коллекции forms().
Вы помните, что наше всплывающее окно было определено переменной myWin. Значит, можно предположить, что код закрывающей кнопки будет выглядеть так:
<button onClick=”myWin.close();”>закрыть</button>
НО
Эта переменная была определена в теле функции openwindow(wd,ht). А событие этой кнопки находится за пределами функции. Значит, программа не будет знать, что такое myWin.
Значит, нужно немного подредактировать начальный скрипт, объявив эту переменную перед функцией:
var myWin;
function openwindow(wd,ht) {
var name, param;
. . .
}
Следующий момент: если всплывающее окно открыто, то кнопка сработает. А если закрыто?..
…Совершенно верно, сгенерирует ошибку.
Есть у этих кнопок такой атрибут: disable. Кнопка с таким атрибутом тусклая и нерабочая. Давайте её такой и сделаем. А заодно поставим кнопку, открывающую окно, и в ней пропишем строку, которая включила бы закрывающую кнопку (для этого нужно задать закрывающей кнопке имя):
ОТКРЫВАЮЩАЯ КНОПКА:
<button onClick=”openwindow(554,510); document.getElementById(‘zakr’).disabled=false;”>открыть</button>
ЗАКРЫВАЮЩАЯ КНОПКА:
<button id=”zakr” disabled onClick=”myWin.close();”>закрыть</button>
И ещё не всё: хорошо бы, чтобы после закрытия окна кнопка вернулась в первоначальное «тусклое» состояние:
<button id=”zakr” disabled onClick=”myWin.close(); this.disabled=true;”>закрыть</button>
Ключевым словом this можно обратиться к текущему элементу (тому, в чьём событии мы находимся).
А теперь поиграем кнопками:
А почему бы, спросите Вы, не оживить кнопку в самой функции, а не в другой кнопке? Можно. Но вспомним, что это окно у нас само открывается при загрузке файла. И Вы наверняка давно его закрыли крестиком. А от такого закрытия наша кнопка не придёт в первоначальное состояние. Значит, она останется рабочей и будет провоцировать на ошибку. Можете проверить: откройте окно кнопкой и закройте крестиком.
Кстати, подобная возможность — это моя недоработка. Как её доработать, честно скажу, пока не знаю. В учебной демке я, так и быть, позволил себе такое. Но вообще будем обращать внимание на разные второстепенные мелочи. На многих сайтах скрипты иногда вдруг работают неправильно, потому что не учтена какая-нибудь мелочь. Мы же будем стараться такие мелочи учитывать.
Итак, мы узнали:
как открывать и закрывать (культурно и некультурно) всплывающие окна.
А также научились:
делать эти самые окна.
К следующему уроку >>
[an error occurred while processing this directive]
Источник