- window.open()
- Синтаксис
- Открыть страницу в новой вкладке
- Pop-up с заданными размерами
- Взаимодействие с новым окном
- Получить доступ к странице из нового окна
- Закрыть окно с помощью close()
- Проверить закрыто ли окно — свойство closed
- Передать фокус — focus()
- Убрать фокус - blur()
- Изменить размеры или переместить окно
- Прокрутка окна
- Популярные события
- Итого
- Document: open() method
- Syntax
- Parameters
- Return value
- Examples
- Notes
- Content Security
- Three-argument document.open()
- Two-argument document.open()
- Specifications
- Browser compatibility
- See also
- Found a content problem with this page?
- Hello World!
- See Also:
- Syntax
- Parameters
- Return Value
- More Examples
- Hello World!
- Browser Support
- COLOR PICKER
- Report Error
- Thank You For Helping Us!
window.open()
open() — метод объекта window позволяет открыть ссылки в новом или всплывающем окне или новой вкладке.
Синтаксис
window.open(url, target, windowFeatures)
url необязательный — относительный или полный путь до страницы в формате строки — заключается в одинарные или двойные кавычки. Если оставить строку пустой » или пропустить параметр, откроется пустая страница.
target необязательный — можно указать имя нового окна — window.name , если метод найдет окно с таким же именем, тогда URL откроется в нем, если нет, то откроется новое. Также параметр может принимать те же значения, что и атрибут target тега , с отличием, что по умолчанию идет _blank :
- _blank — страница будет загружена в новом окне браузера;
- _self — страница загрузиться в том же самом окне;
- _parent — загрузиться в родительской странице текущего элемента. Например если действие происходит во фрейме, ссылка откроется на странице куда он вставлен. Если родительской нет, то работает, как _self .
- _top — страница откроется в окне высшего уровня, какая бы вложенность элементов не была. Если родителя нет, то ведёт себя как _self .
windowFeatures необязательный — здесь можно детально описать, как будет выглядеть новое окно и где располагаться. Параметры записываются через запятую в формате name=value , для булевых можно просто name . Доступные параметры:
- width или innerWidth — ширина содержимого, в том числе полоса прокрутки, минимум 100px;
- height или innerHeight — высота содержимого, в том числе полоса прокрутки, минимум 100px;
- left или screenX — расстояние в пикселях от левой части рабочей области пользователя;
- top или screenY — расстояние в пикселях от верхней части рабочей области пользователя.
- popup — при true ссылка откроется в новом окне.
- noopener — параметр предотвращает доступ новому окну к исходной странице и возвращает null . Все значения второго параметра метода open() , кроме _top , _self и _parent обрабатываются, как _blank .
- noreferrer — блокирует передачу информации о исходной странице и устанавливает noopener=true .
Открыть страницу в новой вкладке
open('https://learnjs.ru/journal/knigi-javascript/', 'BooksJS')
Большинство браузеров блокируют всплывающие окна, которые были вызваны не в результате действий пользователя.
В данном случае ссылка откроется при клике на кнопку без проблем.
Pop-up с заданными размерами
window.open('https://learnjs.ru/', 'LearnJS', 'width=500,height=500,left=650,top=200')
Для удобства третий параметр можно записать в переменную и при вызове метода open() , использовать уже его.
let paramsPopUp = `width=500,height=500,left=650,top=200` window.open('https://learnjs.ru/', 'LearnJS', paramsPopUp)
Взаимодействие с новым окном
open() возвращает ссылку на новое окно, тем самым позволяя манипулировать им с помощью вызова определенных методов и получения значений свойств.
let newWindow = window.open('', 'createWindow', 'popup') newWindow.document.write('Практикуйтесь в написании кода каждый день
')
Здесь мы записали ссылку в переменную newWindow , а затем с помощью write() вывели в новом окне наш текст.
Получить доступ к странице из нового окна
Получить ссылку из нового окна на родителя можно с помощью свойства opener
let myWindow = window.open('','newPopUp','width=200,height=200,left=400,top=200') myWindow.document.write('
Закрыть окно с помощью close()
let newWindow = window.open('https://learnjs.ru', 'LearnJS', 'width=500,height=500') setTimeout(() => newWindow.close(), 3000)
Код откроет всплывающее окно, а через 3 секунды его закроет.
Проверить закрыто ли окно — свойство closed
let newWindow = window.open('', 'newPopUp', 'width=500,height=500') newWindow.document.write('Закрой меня
') let timerId = setInterval(() => < if(newWindow.closed) < alert('Pop-up закрыт') clearInterval(timerId) >>, 1000)
Свойство closed содержит значение true — окно закрыто или false — окно открыто. В нашем примере мы сначала открываем pop-up и далее запускаем проверку — закрыто ли окно. Когда пользователь его закроет, тогда сработает alert(‘Pop-up закрыт’) .
Передать фокус — focus()
Для выполнения задачи есть метод focus()
Здесь мы передали фокус на поле ввода.
Убрать фокус - blur()
Для того, чтобы убрать фокус есть метод blur()
Здесь мы наоборот каждый 0,1 секунду убираем фокус с поля ввода в новом окне. Придется постараться, чтобы туда что-то напечатать.
Изменить размеры или переместить окно
newWindow.moveBy(x,y) - переместить окно в пикселях, x - вправо, y - вниз. Возможны отрицательные значения.
newWindow.moveTo(x,y) - переместить в заданную координату.
newWindow.resizeBy(width,height) - изменить размер окна на указанную величину. Возможны отрицательные значения.
newWindow.resizeTo(width,height) - изменить размер окна на заданное значение.
Методы будут работать, если окно создано вследствие взаимодействия пользователя с элементами страницы. Если окно создается без участия юзера, чаще всего браузеры будут блокировать такие изменения.
Прокрутка окна
newWindow.scrollBy(x,y) - прокрутка окна в пикселях, x - вперед, y - назад. Возможны отрицательные значения.
newWindow.scrollTo(x,y) - прокрутить окно к указанным координатам.
element.scrollIntoView(top) - прокрутить окно так, чтобы был полностью виден указанный элемент. Если значение top равно true или не задано, тогда верх элемента совпадает с верхом экрана, если false , тогда низ с низом.
Популярные события
onresize - изменение размера окна
onload - страница загружена
onfocus - фокус установлен
По клику создаем pop-up, а далее отслеживаем, когда input получит фокус. При достижении события добавляем в наше всплывающее окно заветное Пора учить JavaScript.
Итого
1. Метод open() позволяет открывать всплывающие окна и новые вкладки, а также получать ссылки на них, тем самым давая возможность манипулировать ими.
2. Не только родитель имеет доступ к новому окну, но и новое окно может получить доступ к исходному с помощью свойства opener .
3. Браузеры настороженно относятся к новым окнам, которые были открыты или изменены без ведома пользователя, поэтому подобные события часто блокируются.
4. Создавая новое окно с помощью метода open() , можно указать через параметры его размер, а также как и где оно будет открыто.
5. Полезные методы для взаимодействия в новым окном:
- close() - закрыть окно;
- focus() - передать фокус;
- blur() - убрать фокус;
- moveBy(x,y) , moveTo(x,y) , resizeBy(width,height) , resizeTo(width,height) - изменение размеров и перемещение;
- scrollBy(x,y) , scrollTo(x,y) , scrollIntoView(top) - прокрутка окна.
Skypro - научим с нуля
Document: open() method
The Document.open() method opens a document for writing.
This does come with some side effects. For example:
- All event listeners currently registered on the document, nodes inside the document, or the document's window are removed.
- All existing nodes are removed from the document.
Syntax
Parameters
Return value
A Document object instance.
Examples
The following simple code opens the document and replaces its content with a number of different HTML fragments, before closing it again.
.open(); document.write("Hello world!
"); document.write("I am a fish
"); document.write("The number is 42
"); document.close();
Notes
An automatic document.open() call happens when document.write() is called after the page has loaded.
Content Security
This method is subject to the same same-origin policy as other properties, and does not work if doing so would change the document's origin.
Three-argument document.open()
There is a lesser-known and little-used three-argument version of document.open() , which is an alias of Window.open() (see its page for full details).
This call, for example opens github.com in a new window, with its opener set to null :
.open("https://www.github.com", "", "noopener=true");
Two-argument document.open()
Browsers used to support a two-argument document.open() , with the following signature:
Where type specified the MIME type of the data you are writing (e.g. text/html ) and replace if set (i.e. a string of "replace" ) specified that the history entry for the new document would replace the current history entry of the document being written to.
This form is now obsolete; it won't throw an error, but instead just forwards to document.open() (i.e. is the equivalent of just running it with no arguments). The history-replacement behavior now always happens.
Specifications
Browser compatibility
BCD tables only load in the browser
See also
Found a content problem with this page?
This page was last modified on Apr 7, 2023 by MDN contributors.
Your blueprint for a better internet.
const myWindow = window.open();
myWindow.document.open();
myWindow.document.write("
Hello World!
");
myWindow.document.close();
Do not confuse this method with the window.open() method, which opens a new browser window.
See Also:
Syntax
Parameters
Parameter | Description |
Mimetype | Ignored by all modern browsers. |
replace | Ignored by all modern browsers. |
Return Value
More Examples
If document.write() is used on a closed document, document.open() is automatically called. This will delete existing content.
document.write("
Hello World!
");
Browser Support
document.Open() is a DOM Level 1 (1998) feature.
It is fully supported in all browsers:
Chrome | Edge | Firefox | Safari | Opera | IE |
Yes | Yes | Yes | Yes | Yes | 9-11 |
COLOR PICKER
Report Error
If you want to report an error, or if you want to make a suggestion, do not hesitate to send us an e-mail:
Thank You For Helping Us!
Your message has been sent to W3Schools.
Top Tutorials
Top References
Top Examples
Get Certified
W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.