Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

Обратите внимание на явное использование идентификатора

window
для устранения неоднозначности между методом
close
объекта
Window
и методом
close
объекта
Document
– это важно, если метод
close
вызывается внутри обработчика события.

Большинство броузеров разрешают программисту автоматически закрывать только те окна, которые были созданы его собственным JavaScript-кодом. Если сценарий попытается закрыть любое другое окно, появится диалоговое окно с запросом к пользователю подтвердить (или отменить) закрытие окна. Вызов метода

close
объекта
Window
, представляющего фрейм, а не окно верхнего уровня или вкладку, не выполняет никаких действий: нельзя закрыть фрейм (можно только удалить элемент
<iframe>
из содержащего его документа).

Объект

Window
продолжает существовать и после закрытия представляемого им окна. Однако не следует использовать какие-либо его свойства или методы, исключая проверку свойства
closed
. Если окно было закрыто, это свойство будет иметь значение
true
, свойство document - значение
null
, а методы окна обычно не выполняются.

14.8.2. Отношения между фреймами

Мы уже видели, что метод

open
объекта
Window
возвращает новый объект
Window
, свойство
opener
которого ссылается на первоначальное окно. Таким образом, два окна могут ссылаться друг на друга, и каждое из них может читать свойства и вызывать методы другого. То же самое возможно для фреймов. Сценарий, выполняющийся в окне или фрейме, может ссылаться на объемлющее или вложенное окно или фрейм при помощи свойств, описываемых ниже.

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

window
или
self
. Фрейм может сослаться на объект Window вмещающего окна или фрейма с помощью свойства
parent
:

parent.history.back;

Объект

Window
, представляющий окно верхнего уровня или вкладку, не имеет вмещающего окна, поэтому его свойство parent просто ссылается на само окно:

parent == self; // Для любых окон верхнего уровня

Если фрейм находится внутри другого фрейма, содержащегося в окне верхнего уровня, то он может сослаться на окно верхнего уровня так:

parent.parent
. Однако в качестве универсального сокращения имеется свойство
top
: независимо от глубины вложенности фрейма его свойство
top
ссылается на содержащее его окно самого верхнего уровня. Если объект
Window
представляет окно верхнего уровня, свойство
top
просто ссылается на само окно. Для фреймов, непосредственно принадлежащих окну верхнего уровня, значение свойства
top
совпадает со значением свойства
parent
.

Свойства

parent
и
top
позволяют сценариям ссылаться на родительские окна или фреймы. Существует несколько способов сослаться на дочерние окна или фреймы. Фреймы создаются с помощью элементов
<iframe>.
Получить ссылку на объект
Element
, представляющий элемент
<iframe>,
можно точно так же, как на объект, представляющий любой другой элемент. Допустим, что документ содержит тег
<iframe id="f1">.
Тогда получить ссылку на объект
Element
, представляющий этот элемент
iframe
можно следующим образом:

var iframeElement = document.getElementById("f1");

Элементы

<iframe>
имеют свойство
contentWindow
, которое ссылается на объект
Window
фрейма, поэтому ссылку на объект
Window
этого фрейма можно получить так:

var childFrame = document.getElementByld("fl").contentWindow;

Имеется возможность пойти обратным путем - от объекта

Window
, представляющего фрейм, к объекту
Element
элемента
<iframe>,
содержащего фрейм, - с помощью свойства
frameElement
объекта
Window
. Объекты
Window
, представляющие окна верхнего уровня, а не фреймы, имеют значение
null
в свойстве
frameElement
:

  • Читать дальше
  • 1
  • ...
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: