Установить top.location и открыть новую вкладку?

#javascript #jquery #location

#javascript #jquery #Расположение

Вопрос:

я использую следующий код:

 $('a[href*="somelinktext"]').click(function(e) {
        e.preventDefault();
        top.location = "http://www.example.com";
    });
  

Возможно ли открыть новое окно / вкладку с помощью этой ссылки?

Ответ №1:

Для открытия новой вкладки / окна (в зависимости от настроек браузера пользователя) просто добавьте target атрибут. Однако, чтобы изменить местоположение фрейма верхнего уровня текущей вкладки, вам нужен обработчик onclick.

 $('a[href*="somelinktext"]').each(function() {
    $(this).attr('target', '_blank')
}).click(function(e) {
    top.location = 'http://www.example.com';
});
  

Но если вы только хотите открыть новую вкладку, просто придерживайтесь target attr:

 $('a[href*="somelinktext"]').each(function() {
    $(this).attr('target', '_blank')
});
  

Вы также могли бы установить это в самом HTML-коде, хотя:

 <a href="..." target="_blank">blah</a>
  

(он также поддерживает _top фрейм верхнего уровня)

Комментарии:

1. Ага.. Я бы тоже сказал target="_blank" , но я вспомнил, что в спецификациях HTML5 сказано, что он устарел. Перечитав указанную спецификацию, я обнаружил, что она больше не является устаревшей, поскольку «целевой атрибут для элементов a и area больше не является устаревшим, поскольку он полезен в веб-приложениях». 1

2. Я бы все равно не стал его использовать. Это намного удобнее для пользователя, если они могут решить — и в настоящее время большинство людей (ну, за исключением некоторых секретарей и т.д. : p) Все равно знают, как использовать среднюю кнопку мыши..

Ответ №2:

Использовать window.open вместо top.location ?

Комментарии:

1. Да, но обратите внимание, что в IE и Safari ссылка скорее откроется в новом окне. Все остальные браузеры будут работать до тех пор, пока в настройках tabs установлено создавать новые вкладки вместо окон.

Ответ №3:

Я думаю, вы можете использовать window.open функцию для этого.

Спасибо