Чтение Работа с окнами в коде Chrome .
Кажется, вы не знаете, что в Firefox есть больше, чем одна «область» (и на обычных веб-страницах). Я имею в виду следующее: каждое окно, вкладка и iframe имеют собственный набор объектов (глобальный объект, который является Window
объектом, документом и т. Д.). Кроме того, иногда существуют «области» с собственным глобальным объектом, но без DOM (без window
или document
) - компоненты XPCOM, модули jsm, рабочие, песочницы.
openDialog
возвращает объект окна нового диалога. Элемент <dialog id='myWindowName'>
может быть доступен в документе этого окна, синтаксис зависит от того, где выполняется скрипт, который хочет получить к нему доступ: если он запускается в диалоговом окне, он может использовать document.getElementById()
, тогда как скрипт в другом окне должен получить к нему доступ через ссылку на окно диалога (скажем, dialogWindow
): dialogWindow.document.getElementById()
.
cancelDialog
- это метод для элемента XUL <dialog>
, тогда как close()
- это метод для окна, поэтому window.cancelDialog () не делает не работает, а window.close () работает.
Что из диалогового окна . cancelDialog
или window.close()
"лучше": cancelDialog делает больше, чем просто window.close () (см. его код в mxr ) - те же шаги, что и при нажатии кнопки «Отмена» в диалоговом окне. Поэтому, прежде чем закрыть окно, он проверяет, отключена ли кнопка «Отмена» в диалоговом окне, затем запускает событие ondialogcancel, позволяющее заинтересованному коду предотвратить это, а затем, если все в порядке, закрывает окно с помощью window.close()
.