Javascript window.open странное поведение в Firefox

У меня есть несколько ссылок, которые должны открываться в одном окне или на одной вкладке. Для этого я дал окну имя, как в этом примере кода:

<a href = "#" onClick='window.open("http://somesite.com", "mywindow", "");'>link 1</a>
<a href = "#" onClick='window.open("http://someothersite.com", "mywindow", "");'>link 2</a>

Это нормально работает в Internet Explorer, но Firefox всегда открывает новую вкладку / окно. Есть идеи?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
0
27 348
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Функция window.open () в Javascript специально разработана для открытия нового окна, см. документация w3schools. На самом деле похоже, что IE обрабатывает вещи нестандартным образом (что неудивительно).

Если вы хотите переместить существующее местоположение на новую страницу с помощью Javascript, вам следует взглянуть на функцию location.replace ().

Вообще говоря, я бы рекомендовал вам разработать для Firefox, а затем исправить для IE. Firefox не только предлагает лучшие инструменты разработки, но и его реализация стандартов W3C имеет тенденцию быть более правильной.

Вы правы, но можно сказать только обычно ... Потому что, если вы собираетесь реализовать свою собственную обработку DOM, FireFox допускает много дерьма! -)

roenving 06.11.2008 18:18

Разрабатываю в Firefox, регулярно тестирую в Safari, Chrome и Opera. Потом скрестим пальцы и исправлю в IE. Это правда, что в любом браузере слишком много сойдет с рук.

Nosredna 03.07.2009 23:13

По умолчанию FF использует новую вкладку, если размеры не указаны в параметрах window.open. Вам необходимо добавить размеры для нового окна браузера.

Попробуй это:

<a href = "#" onClick='window.open("http://somesite.com", "mywindow", "width=700", "height=500");'>link 1</a>

Спасибо и мне! Мне было интересно, почему в IE работает так, как ожидалось, а в FF - всегда новая вкладка ...

m_pGladiator 07.04.2009 14:02

На самом деле документация W3Schools, на которую ссылается Габриэль1836, - это только очень краткое описание функций.

И как ни странно, собственный разработчик mozilla ссылается на эту логику ПРОТИВОПОКАЗАНИЯ.

MDC / DOM / Window.open

var WindowObjectReference = window.open(strUrl, 
              strWindowName [, strWindowFeatures]); 

If a window with the name strWindowName already exists, then, instead of opening a new window, strUrl is loaded into the existing window. In this case the return value of the method is the existing window and strWindowFeatures is ignored. Providing an empty string for strUrl is a way to get a reference to an open window by its name without changing the window's location. If you want to open a new window on every call of window.open(), you should use the special value _blank for strWindowName.

Однако на странице также указано, что есть много расширений, которые можно установить, чтобы изменить это поведение.

Так что либо документация, которую Mozilla предоставляет для людей, нацеленных на собственный браузер, - это неправильный, либо с вашей тестовой системой что-то не так :)

Кроме того, ваша текущая нотация A-Href вредна для Интернета и приведет пользователей в бешенство.

  <a href = "http://google.com"  
     onclick = "window.open( this.href, 'windowName' ); return false" >
     Text
  </a>

Это СУЩЕСТВЕННО лучший способ сделать это.

Многие люди инстинктивно будут «щелкать средней кнопкой мыши» по ссылкам, которые они хотят открыть вручную в новой вкладке, и наличие вашего единственного href как «#» приводит их в бешенство.

Уловка с "#" является избыточной и несколько плохой уловкой, чтобы остановить непреднамеренное перемещение страницы, но это происходит только из-за непонимания того, как использовать onclick.

Если вы вернете FALSE из события по щелчку, он отменит действие по умолчанию для ссылок (действие по умолчанию - переход на страницу ток)

Еще лучше, чем эта нотация, было бы использовать ненавязчивый javascript, например:

 <a href = "google.com" rel = "external" >Text</a>

и позже

 <script type = "text/javascript">
 jQuery(function($){ 
        $("a[rel*=external]").click(function(){ 
            window.open(this.href, 'newWindowName' ); 
            return false; 
        });
 }); 
 </script>

Почему бы вам просто не использовать простой HTML, например

<a href = "http://www.google.com" target = "my_window_tab_frame_or_iframe">Link</a>

вместо использования JavaScript?

Другие вопросы по теме