У меня есть несколько ссылок, которые должны открываться в одном окне или на одной вкладке. Для этого я дал окну имя, как в этом примере кода:
<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 всегда открывает новую вкладку / окно. Есть идеи?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Функция window.open () в Javascript специально разработана для открытия нового окна, см. документация w3schools. На самом деле похоже, что IE обрабатывает вещи нестандартным образом (что неудивительно).
Если вы хотите переместить существующее местоположение на новую страницу с помощью Javascript, вам следует взглянуть на функцию location.replace ().
Вообще говоря, я бы рекомендовал вам разработать для Firefox, а затем исправить для IE. Firefox не только предлагает лучшие инструменты разработки, но и его реализация стандартов W3C имеет тенденцию быть более правильной.
Разрабатываю в Firefox, регулярно тестирую в Safari, Chrome и Opera. Потом скрестим пальцы и исправлю в IE. Это правда, что в любом браузере слишком много сойдет с рук.
По умолчанию FF использует новую вкладку, если размеры не указаны в параметрах window.open. Вам необходимо добавить размеры для нового окна браузера.
Попробуй это:
<a href = "#" onClick='window.open("http://somesite.com", "mywindow", "width=700", "height=500");'>link 1</a>
Спасибо и мне! Мне было интересно, почему в IE работает так, как ожидалось, а в FF - всегда новая вкладка ...
На самом деле документация W3Schools, на которую ссылается Габриэль1836, - это только очень краткое описание функций.
И как ни странно, собственный разработчик mozilla ссылается на эту логику ПРОТИВОПОКАЗАНИЯ.
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?
Вы правы, но можно сказать только обычно ... Потому что, если вы собираетесь реализовать свою собственную обработку DOM, FireFox допускает много дерьма! -)