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

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

Шрифт:

Атрибут

id
элемента необходим для придания ему уникальности внутри документа: два элемента не могут иметь одинаковые значения атрибута
id
. Однако это не относится к атрибуту
name
. Если сразу несколько элементов, из перечисленных выше, будут иметь одно и то же значение атрибута
name
(или, если один элемент имеет атрибут
name
, а другой - атрибут
id
с тем же значением), неявно созданная глобальная переменная с этим именем будет ссылаться на объект, подобный массиву, хранящий все элементы с этим именем.

Элементы

<iframe>
с атрибутом
name
или
id
обрабатываются иначе. Переменная, неявно созданная для таких элементов, будет ссылаться не на объект
Element
, представляющий сам элемент, а наобъект
Window
, представляющий вложенный фрейм созданный элементом
<iframe>.
К этой теме мы еще вернемся в разделе 14.8.2.

14.8. Работа с несколькими окнами и фреймами

Единственное окно веб-броузера может содержать несколько вкладок. Каждая вкладка является независимым контекстом просмотра. Каждая имеет собственный объект

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

Но окна не всегда изолированы друг от друга. Сценарий в одном окне или вкладке может открывать новые окна или вкладки, и в этом случае окна могут взаимодействовать друг с другом и с находящимися в них документами (с учетом ограничений, накладываемых политикой общего происхождения, описываемой в разделе 13.6.2). Подробнее тема открытия и закрытия окон рассматривается в разделе 14.8.1.

HTML-документы могут содержать вложенные документы, используя для этого элементы

<iframe>.
Элемент
<iframe>
создает вложенный контекст просмотра, представленный отдельным объектом
Window
. Устаревшие и не рекомендуемые к использованию элементы
<frameset>
и
<frame>
также создают вложенные контексты просмотра, и каждый элемент
<frame>
представлен собственным объектом
Window
. Различия между окнами, вкладками, плавающими фреймами (элемент
<iframe>
) и фреймами в клиентском JavaScript весьма несущественны: все они являются отдельными контекстами просмотра и в сценариях все они представлены объектами
Window
. Вложенные контексты просмотра не изолированы друг от друга, как обычно бывают изолированы независимые вкладки. Сценарий, выполняющийся в одном фрейме, всегда имеет доступ к вмещающим и вложенным фреймам, и только политика общего происхождения может не позволять сценарию просматривать документы в этих фреймах. Вложенные фреймы рассматриваются в разделе 14.8.2.

Поскольку в клиентском JavaScript объект Window является глобальным объектом, каждое окно или фрейм имеет отдельный контекст выполнения сценариев на языке JavaScript. Однако сценарий JavaScript, выполняющийся в одном окне, может, с учетом ограничений политики общего происхождения, использовать объекты, свойства и методы, объявленные в другом окне. Более подробно эта тема обсуждается в разделе 14.8.3. На тот случай, когда политика общего происхождения не позволяет сценариям в двух отдельных окнах взаимодействовать друг с другом напрямую, стандарт HTML5 предусматривает прикладной интерфейс передачи сообщений, основанный на механизме событий, который обеспечивает возможность косвенного взаимодействия. Подробнее эта возможность рассматривается в разделе 22.3.

14.8.1. Открытие и закрытие окон

Открыть новое окно веб-броузера (или вкладку, что обычно зависит от настроек броузера) можно с помощью метода

open
объекта Window. Метод
Window.ореn
загружает документ по указанному URL-адресу в новое или в существующее окно и возвращает объект
Window
, представляющий это окно. Он принимает четыре необязательных аргумента:

Первый аргумент

ореn
– это URL-адрес документа, отображаемого в новом окне. Если этот аргумент отсутствует (либо является пустой строкой), будет открыт специальный URL пустой страницы about:blank.

Второй аргумент

ореn
– это строка с именем окна. Если окно с указанным именем уже существует (и сценарию разрешено просматривать содержимое этого окна), используется это существующее окно. Иначе создается новое окно и ему присваивается указанное имя. Если этот аргумент опущен, будет использовано специальное имя "_blank", т. е. будет открыто новое неименованное окно.

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

Имена окон

Имя окна играет важную роль, потому что оно позволяет указать существующее окно в вызове метода

open
, а также потому, что оно может использоваться как значение HTML-атрибута
target
элементов
<а>
и
<form>,
ссылающихся на документ (или результат обработки формы), который должен быть отображен в именованном окне. Атрибуту
target
этих элементов можно также присвоить значение «_blank», «_parent» или «_top», чтобы открыть документ в новом пустом окне, родительском окне или фрейме или в окне верхнего уровня.

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

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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