Jquery post открыть новое окно

Открытие окон и методы window

Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

Более новая информация по этой теме находится на странице https://learn.javascript.ru/popup-windows.

Всплывающее окно («попап» – от англ. Popup window) – один из старейших способов показать пользователю ещё один документ.

В этой статье мы рассмотрим открытие окон и ряд тонких моментов, которые с этим связаны.

…При запуске откроется новое окно с указанным URL.

Большинство браузеров по умолчанию создают новую вкладку вместо отдельного окна, но чуть далее мы увидим, что можно и «заказать» именно окно.

Блокировщик всплывающих окон

Рекламные попапы очень надоели посетителям, аж со времён 20-го века, поэтому современные браузеры всплывающие окна обычно блокируют. При этом пользователь, конечно, может изменить настройки блокирования для конкретного сайта.

Всплывающее окно блокируется в том случае, если вызов window.open произошёл не в результате действия посетителя.

Как же браузер понимает – посетитель вызвал открытие окна или нет?

Для этого при работе скрипта он хранит внутренний «флаг», который говорит – инициировал посетитель выполнение или нет. Например, при клике на кнопку весь код, который выполнится в результате, включая вложенные вызовы, будет иметь флаг «инициировано посетителем» и попапы при этом разрешены.

А если код был на странице и выполнился автоматически при её загрузке – у него этого флага не будет. Попапы будут заблокированы.

Полный синтаксис window.open

Функция возвращает ссылку на объект window нового окна, либо null , если окно было заблокировано браузером.

url URL для загрузки в новое окно. name Имя нового окна. Может быть использовано в параметре target в формах. Если позднее вызвать window.open() с тем же именем, то браузеры (кроме IE) заменяют существующее окно на новое. params Строка с конфигурацией для нового окна. Состоит из параметров, перечисленных через запятую. Пробелов в ней быть не должно.

Значения параметров params .

  1. Настройки расположения окна:

left/top (число)

Координаты верхнего левого угла относительно экрана. Ограничение: новое окно не может быть позиционировано за пределами экрана.

Ширина/высота нового окна. Минимальные значения ограничены, так что невозможно создать невидимое окно с нулевыми размерами.

Если координаты и размеры не указаны, то обычно браузер открывает не окно, а новую вкладку.

  1. Свойства окна:

menubar (yes/no) Скрыть или показать строку меню браузера. toolbar (yes/no) Показать или скрыть панель навигации браузера (кнопки назад, вперёд, обновить страницу и остальные) в новом окне. location (yes/no) Показать/скрыть поле URL-адреса в новом окне. По умолчанию Firefox и IE не позволяют скрывать строку адреса. status (yes/no) Показать или скрыть строку состояния. С другой стороны, браузер может в принудительном порядке показать строку состояния. resizable (yes/no) Позволяет отключить возможность изменять размеры нового окна. Значение no обычно неудобно посетителям. scrollbars (yes/no) Разрешает убрать полосы прокрутки для нового окна. Значение no обычно неудобно посетителям.

  1. Ещё есть небольшое количество не кросс-браузерных свойств, которые обычно не используются. Вы можете узнать о них в документации, например MDN: window.open.

Браузер подходит к этим параметрам интеллектуально. Он может проигнорировать их часть или даже все, они скорее являются «пожеланиями», нежели «требованиями».

  • Если при вызове open указан только первый параметр, параметр отсутствует, то используются параметры по умолчанию. Обычно при этом будет открыто не окно, а вкладка, что зачастую более удобно.
  • Если указана строка с параметрами, но некоторые yes/no параметры отсутствуют, то браузер выставляет их в no . Поэтому убедитесь, что все нужные вам параметры выставлены в yes .
  • Когда не указан top/left , то браузер откроет окно с небольшим смещением относительно левого верхнего угла последнего открытого окна.
  • Если не указаны width/height , новое окно будет такого же размера, как последнее открытое.
Читайте также:  Штор для окна под уклоном

Доступ к новому окну

Вызов window.open возвращает ссылку на новое окно. Она может быть использована для манипуляции свойствами окна, изменения URL, доступа к его переменным и т.п.

В примере ниже мы заполняем новое окно содержимым целиком из JavaScript:

Источник

Открыть ссылку в новой вкладке на js

Как открыть все ссылки в блоке #blok_1 и #blok_3 в новой вкладке на js , так чтобы не добавлять никакой код в сами ссылки ?

2 ответа 2

Для этих целей существуют события и функция window.open() . Событие соответственно на click . Функция window.open(url, target, params) принимает два параметра, урл новой страницы и ‘target’, это имя новой страницы, обычно для окрытия новой вкладки используют _blank и параметры для новой вкладки, их значения можно посмотреть на MDN.

Можно сделать это двумя способами.

Первый — создать функцию, принимающую объект DOM, в котором надо переходить по ссылкам в новом окне, придется вызвать эту функцию для каждого блока, в котором должно быть такое поведение:

  1. создаем обработчик события на саму обертку (в нашем случае это будут #blok_1 и #blok_3 ). На случай, если ссылки могут появиться внутри блока динамически. Можно повесить событие непосредственно на ссылки, дело от этого не изменится;
  2. фильтровать будет только ссылки по их селектору: a:not([href^=»#»]) или a[href^=»http://»] и a[href^=»https://»] ; хочется же, чтобы переход был именно по ссылке, а не по якорю.
  3. в обработчике остановим обработку события по-умолчанию, чтобы переход внутри страницы не был совершен (надо смотреть, чтобы это не повредило общей логики работы сайта) и совершим переход с помощью window.open() ;
  4. соответственно работать с этой функцией так: inNewWindow(document.getElementById(‘blok_1’)) .

Второй немного лучше, но придется дописать атрибут к элементам.

  1. допишем к элементам, по которым должен быть переход на новую страницу, пучстой data-атрибут, например, data-newwindow ;
  2. выберем все элементы с таким атрибутом и повесим на них такой же обработчик, как и в первом варианте.
  3. тогда придется всего лишь дописать вот это с скрипт:

Источник

Открыть ссылку в новой вкладке (не в новом окне) с помощью JavaScript

Я пытаюсь открыть URL-адресом в новой вкладке, а не окне. Я видел связанные вопросы, где ответы будут выглядеть примерно так:

но ни один из них не работал для меня, браузер все еще пытался открыть всплывающее окно.

27 ответов

ничего автор не может выбрать Открыть в новой вкладке вместо нового окна. Это предпочтения пользователя.

на реверс неверно; путем указания измерений для окна в третьем аргументе window.open , вы можете запустить новое окно, когда предпочтение отдается вкладкам.

в большинстве случаев это должно происходить непосредственно в onclick обработчик для ссылки для предотвращения всплывающих блокировщиков и поведения «новое окно» по умолчанию. Вы можете сделать это таким образом или добавив прослушиватель событий в свой DOM «объект».

window.open() не откроется в новой вкладке, если это не происходит на фактическом событии click. В приведенном примере URL-адрес открывается в фактическом событии click. это будет работать при условии, что пользователь имеет соответствующие настройки в браузере.

аналогично, если вы пытаетесь выполнить вызов Ajax в функции click и хотите открыть окно успеха, убедитесь, что вы выполняете вызов Ajax с помощью async : false установить вариант.

window.open невозможно надежно открыть всплывающие окна на новой вкладке во всех браузерах

различные браузеры реализуют поведение window.open по-разному, особенно в отношении предпочтений браузера пользователя. вы не можете ожидать такого же поведения для window.open чтобы быть правдой во всех Internet Explorer, Firefox и Chrome, из-за различных способов, которыми они обрабатывают предпочтения браузера пользователя.

например, Internet Explorer (11) пользователи могут открывать всплывающие окна в новом окне или на новой вкладке, вы не можете заставить пользователей Internet Explorer 11 открывать всплывающие окна определенным образом через window.open , как указано в Квентин!—28—>.

что касается пользователей Firefox (29), используя window.open(url, ‘_blank’) зависит от настроек вкладки браузера, хотя вы все равно можете заставить их открывать всплывающие окна в новом окне, указав ширину и высоту (см. «Как насчет Chrome?» раздел ниже).

Читайте также:  Как снять размеры окна при установленном окне

демонстрация

перейдите в настройки браузера и настройте его для открытия всплывающих окон в новом окне.

Internet Explorer (11)

Тестовая Страница

после настройки Internet Explorer (11) для открытия всплывающих окон в новом окне, как показано выше, используйте следующую тестовую страницу для проверки window.open :

обратите внимание, что всплывающие окна открыты в новом окне, а не в новой вкладке.

вы также можете проверить эти фрагменты выше в Firefox (29) с его предпочтением вкладки, установленным на новые окна, и увидеть те же результаты.

Как Насчет Chrome? Он Реализует window.open отличается от Internet Explorer (11) и Firefox (29).

я не уверен на 100%, но он выглядит как Chrome (версия 34.0.1847.131 m ), похоже, не имеет каких-либо настроек, которые пользователь может использовать для выбора или нет чтобы открыть всплывающие окна в новом окне или новой вкладке (например, Firefox и Internet Explorer). Я проверил документация Chrome для управления всплывающими окнами, но в нем ничего не говорилось о таких вещах.

и еще раз, различные браузеры, похоже, реализуют поведение window.open по-разному. в Chrome и Firefox, указание ширины и высоты заставит всплывающее окно, даже если пользователь установите Firefox (29), чтобы открыть новые окна на новой вкладке (как указано в ответах на JavaScript открыть в новом окне, а не tab):

однако тот же фрагмент кода выше всегда будет открывать новую вкладку в Internet Explorer 11, если пользователи устанавливают вкладки в качестве настроек браузера, даже не указывая ширину и высоту, вынудит новое всплывающее окно для них.

Источник

Откройте URL в новой вкладке (а не в новом окне) с помощью JavaScript

Я пытаюсь открыть URL в новой вкладке, а не во всплывающем окне.

Я видел связанные вопросы, где ответы выглядели бы примерно так:

Но ни один из них не работал на меня, браузер все еще пытался открыть всплывающее окно.

25 ответов

есть много ответов о том, как открыть URL в новом окне с помощью window.open() , но это открывает всплывающее окно, и это не то, что мне нужно. Проблема в том, что многие пользователи имеют свои браузеры, настроенные на блокировку popup windows. С другой стороны, многие веб-сайты могут открывать.

Я пытаюсь открыть URL в новой вкладке через некоторое время. Приведенный выше код открывает url в той же вкладке. Но я хочу открыть url в новой вкладке или новом окне.

Это просто трюк,

В большинстве случаев это должно происходить непосредственно в обработчике onclick для ссылки, чтобы предотвратить блокировку всплывающих окон и поведение по умолчанию «new window». Вы можете сделать это таким образом или добавить прослушиватель событий к объекту DOM .

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

Обратное не верно; указав размеры для окна в третьем аргументе window.open() , вы можете вызвать новое окно, когда предпочтительно для вкладок.

window.open() не откроется в новой вкладке, если это не происходит в реальном событии щелчка. В приведенном примере URL открывается при фактическом событии click. Это будет работать при условии, что пользователь имеет соответствующие настройки в браузере .

Аналогично, если вы пытаетесь выполнить вызов Ajax в функции click и хотите открыть окно при успешном выполнении, убедитесь, что вы выполняете вызов Ajax с установленным параметром async : false .

Я использую, window.open(Download.php); Этот файл открывается в новой вкладке для всех браузеров. Но в Chrome он открывается в новом окне. Так что я постарался: window.open(Download.php,’_blank’); window.open(Download.php,’_new’); Но он все равно открывается в новом окне, а не на вкладке. Я не.

Я знаю, как открыть окно в новой вкладке: var newTab = safari.application.activeBrowserWindow.activeTab(); newTab.url = http://something Я знаю, как создать новое окно: safari.application.openBrowserWindow(); Как открыть URL во вновь созданном окне? Или как я могу открыть URL в активной вкладке.

window.open не удается надежно открыть всплывающие окна в новой вкладке во всех браузерах

Различные браузеры реализуют поведение window.open по-разному, особенно в отношении предпочтений браузера пользователя. Вы не можете ожидать, что одно и то же поведение для window.open будет верно для всех Internet Explorer, Firefox и Chrome, поскольку они по-разному обрабатывают предпочтения браузера пользователя.

Читайте также:  Какие шторы подойдут для комнаты с двумя окнами

Например, пользователи Internet Explorer (11) могут открывать всплывающие окна в новом окне или новой вкладке, вы не можете заставить пользователей Internet Explorer 11 открывать всплывающие окна определенным образом через window.open , как указано в ответе Квентина .

Что касается пользователей Firefox (29), то использование window.open(url, ‘_blank’) зависит от предпочтений вкладки их браузера, хотя вы все еще можете заставить их открывать всплывающие окна в новом окне, указав ширину и высоту (см. раздел «What About Chrome?» ниже).

Демонстрация

Перейдите в настройки Вашего браузера и настройте его для открытия всплывающих окон в новом окне.

Интернет Explorer (11)

тестовая страница

После настройки Internet Explorer (11) для открытия всплывающих окон в новом окне, как показано выше, используйте следующую тестовую страницу для проверки window.open :

Обратите внимание, что всплывающие окна открываются в новом окне, а не на новой вкладке.

Вы также можете проверить эти фрагменты выше в Firefox (29) с его предпочтением вкладки, установленным на new windows, и увидеть те же результаты.

А Как Насчет Хрома? Он реализует window.open в отличие от Internet Explorer (11) и Firefox (29).

Я не уверен 100%, но похоже, что Chrome (версия 34.0.1847.131 m ) не имеет никаких настроек, которые пользователь может использовать, чтобы выбрать, открывать ли всплывающие окна в новом окне или новой вкладке (как у Firefox и Internet Explorer). Я проверил документацию Chrome для управления всплывающими окнами, но там ничего не упоминалось о таких вещах.

Кроме того, опять же, различные браузеры, похоже, реализуют поведение window.open по- разному. В Chrome и Firefox указание ширины и высоты приведет к появлению всплывающего окна, даже если пользователь установил Firefox (29), чтобы открыть новый windows в новой вкладке (как указано в ответах на JavaScript открыть в новом окне, а не на вкладке ):

Однако тот же самый фрагмент кода выше всегда будет открывать новую вкладку в Internet Explorer 11, если пользователи устанавливают вкладки в качестве своих предпочтений браузера, даже не указывая ширину и высоту, заставит новое окно всплывать для них.

Таким образом, поведение window.open в Chrome, по-видимому, заключается в том, чтобы открывать всплывающие окна в новой вкладке при использовании в событии onclick , открывать их в новом windows при использовании из консоли браузера ( как отметили другие люди) и открывать их в новом windows, когда указано значение ширины и высоты.

Резюме

Различные браузеры реализуют поведение window.open по- разному в зависимости от предпочтений браузера пользователей. Вы не можете ожидать, что одно и то же поведение для window.open будет верно для всех Internet Explorer, Firefox и Chrome, поскольку они по-разному обрабатывают предпочтения браузера пользователя.

дополнительное чтение

Он создает виртуальный элемент a , дает ему target=»_blank» , чтобы он открылся в новой вкладке, дает ему правильный url href и затем щелкает его.

И если вы хотите, на основе этого вы можете создать некоторую функцию:

и тогда вы можете использовать его как:

Если вы используете window.open(url, ‘_blank’) , он будет заблокирован (popup blocker) на Chrome.

С чистым JavaScript,

Чтобы развить ответ Стивена Спилберга, я сделал это в таком случае:

Таким образом, непосредственно перед тем, как браузер перейдет по ссылке, я устанавливаю целевой атрибут, поэтому он сделает ссылку открытой в новой вкладке или окне ( зависит от настроек пользователя ).

Я использую следующее, И это работает очень хорошо.

Интересным фактом является то, что новая вкладка не может быть открыта, если действие не вызвано пользователем (нажатие кнопки или что-то еще) или если оно асинхронно, например, это будет NOT открыто в новой вкладке:

Но это может открыться в новой вкладке, В зависимости от настроек браузера:

Я думаю, что вы не можете контролировать это. Если пользователь настроил свой браузер для открытия ссылок в новом окне, вы не можете заставить его открыть ссылки в новой вкладке.

Просто опуская [strWindowFeatures] параметры откроет новую вкладку, UNLESS настройки браузера переопределяет (настройки браузера козыри JavaScript).

Источник

Поделиться с друзьями
Adblock
detector