JavaScript: location.href, чтобы открыть в новом окне / вкладке?

389

У меня есть файл JavaScript от стороннего разработчика. Он имеет ссылку, которая заменяет текущую страницу с целью. Я хочу, чтобы эта страница была открыта в новой вкладке.

Это то, что я до сих пор:

if (command == 'lightbox') {
 location.href="https://support.wwf.org.uk/earth_hour/index.php?type=individual";
}

Может кто-нибудь мне помочь?

iamjonesy
источник

Ответы:

932
window.open(
  'https://support.wwf.org.uk/earth_hour/index.php?type=individual',
  '_blank' // <- This is what makes it open in a new window.
);
Алекс
источник
102
Стоит упомянуть: создается ли новая вкладка или окно, определяется браузером (настройка).
jAndy
4
@alex Я отредактировал этот ответ, чтобы сделать важный бит читабельным. Если вы не одобряете мое форматирование, могу ли я предложить сократить URL-адрес, чтобы второй параметр соответствовал области прокрутки?
Phrogz
5
@ErickBest Это неправильно. "_blank"гарантирует, что окно / вкладка будет новым. Все остальное (кроме других специальных имен) дает этому окну конкретное имя, и последующие ссылки на эту цель будут использовать окно повторно. jsFiddle .
Алекс
2
Это просто вызывает всплывающее уведомление о блокировке в современных браузерах, совсем не имитирует _blankщелчок якоря.
Натан Хорнби
22
всплывающее окно предотвращено браузером.
Джитендра Панчоли
24

Если вы хотите использовать, location.hrefчтобы избежать проблем с всплывающими окнами, вы можете использовать пустую <a>ссылку и затем использовать javascript, чтобы щелкнуть по ней.

что-то вроде в HTML

<a id="anchorID" href="mynewurl" target="_blank"></a>

Тогда javascript нажмите на него следующим образом

document.getElementById("anchorID").click();
Эндрю Филд
источник
13
Я надеялся на это решение, однако оно все еще вызывает блокировку всплывающих окон (по крайней мере, в Chrome). У меня такое чувство, что браузер знает, что это клик по javascript, и обрабатывает его по-другому.
Натан Хорнби
1
Спасибо, Натан. Вы совершенно правы. Вы все еще получаете сообщение о блокировке всплывающего окна. Я думал, что вылечил это. Теоретически это должно было сработать. Андрей
поле
2
$("#anchorID")[0].click(); использовать это решение с jquery.
Звонок
1
Lol theBell, это не jQuery, если вы обращаетесь напрямую к DOM-элементу[0]
Andre Figueiredo
7

Вы можете открыть его в новом окне с помощью window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');. Если вы хотите открыть его в новой вкладке, откройте текущую страницу в двух вкладках, а затем разрешите запуск сценария, чтобы получить как текущую, так и новую страницу.

user616639
источник
6

Чистая js альтернатива window.open

let a= document.createElement('a');
a.target= '_blank';
a.href= 'https://support.wwf.org.uk/';
a.click();

Вот рабочий пример (фрагменты stackoverflow не позволяют открывать)

Камил Келчевски
источник
0

Например:

    $(document).on('click','span.external-link',function(){
        var t               = $(this), 
            URL             = t.attr('data-href');        
        $('<a href="'+ URL +'" target="_blank">External Link</a>')[0].click();

    });

Рабочий пример .


источник
Всплывающее окно предотвращено браузером.
Millar248
1
Это означает, что у вас либо есть блокировка рекламы, либо что-то еще, что блокирует его. Поведение по умолчанию должно работать в нормальных условиях
Андрей Серегин,
0

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

   var reportDate = $("#inputDateId").val();
   var url = '@Url.Action("PrintIndex", "Callers", new {dateRequested = "findme"})';
   window.open(window.location.href = url.replace('findme', reportDate), '_blank');
Primoshenko
источник
Требуется ли первая и вторая строки? Не будет ли работать без reportDateи urlпеременные?
Учись для удовольствия
Вы можете удалить параметр (reportDate), но URL-адрес важен, потому что он содержит вызов метода действия.
Примошенко