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

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

Вот что у меня есть на данный момент:

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

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


person iamjonesy    schedule 28.02.2011    source источник


Ответы (7)


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

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

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

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

document.getElementById("anchorID").click();
person andrew field    schedule 15.08.2014
comment
Я надеялся на это решение, но, похоже, оно все еще вызывает всплывающий блок (по крайней мере, в Chrome). У меня такое ощущение, что браузер знает, что это щелчок javascript, и обрабатывает его по-разному. - person Nathan Hornby; 01.10.2014
comment
Спасибо, Натан. Вы совершенно правы. Вы по-прежнему получаете всплывающее сообщение о блокировке. Я думал, что вылечил это. Теоретически это должно было сработать. Эндрю - person andrew field; 25.03.2015
comment
$("#anchorID")[0].click();, чтобы использовать это решение с jquery. - person theBell; 22.09.2016
comment
Lol theBell, это не jQuery, если вы напрямую обращаетесь к элементу DOM [0] - person Andre Figueiredo; 30.07.2019

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

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

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

person Kamil Kiełczewski    schedule 05.12.2019
comment
Это решение. +++ - person Aries VII; 06.07.2021

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

person user616639    schedule 28.02.2011

Например:

    $(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();

    });

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

person Community    schedule 13.05.2018
comment
Всплывающее окно заблокировано браузером. - person Millar248; 29.01.2019
comment
Это означает, что у вас либо есть блокировка рекламы, либо что-то еще, что ее блокирует. Поведение по умолчанию должно работать в нормальных условиях - person Andrey Seregin; 13.11.2019

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

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

использование location.href заменит текущий URL на новый, то есть https://support.wwf.org.uk/earth_hour/index.php?type=individual на той же веб-странице.

Чтобы открыть новую вкладку, вы можете использовать следующую команду: if (command == 'lightbox') {window.open (https://support.wwf.org.uk/earth_hour/index.php?type=individual, '_blank' ); }

person user3644678    schedule 08.06.2021

person    schedule
comment
Стоит упомянуть: создание новой вкладки или окна решает браузер (настройка). - person jAndy; 28.02.2011
comment
@alex Я отредактировал этот ответ, чтобы сделать важный бит читаемым. Если вы не одобряете мое форматирование, могу ли я предложить сократить URL-адрес, чтобы второй параметр соответствовал области отмены прокрутки? - person Phrogz; 20.09.2011
comment
Хотя поздно, но полезно, кто-то спросил, является ли '_blank' текстом по умолчанию или должен быть написан таким образом, или это имеет какое-либо влияние на весь window.open (???) ... Только для записей _blank может быть textString. Вы даже можете написать это как my_newWindow или как-нибудь еще. При условии, что: Между символами нет пробелов, также обратите внимание, что это НЕ будет заголовком * нового. окно. - person ErickBest; 23.07.2013
comment
@ErickBest Это неверно. "_blank" гарантирует, что окно / вкладка будут новыми. Все остальное (помимо других специальных имен) дает этому окну конкретное имя, и последующие ссылки на эту цель будут повторно использовать это окно. jsFiddle. - person alex; 24.07.2013
comment
Не совсем. Просто закомментировал оператор if в скрипке. Обе кнопки работают как VOODOO !. Попробуйте и ВОЙЛА! _random_string работает так же, как _blank. Фактически, одним из преимуществ этого метода является то, что у пользователя есть совершенно новые Windows для различных целей, например: my_SPORTS_Window, my_NEWS_Window, _4 _... и т.д. открыть там. Насколько это круто? Пожалуйста, прочтите это НЕ ИСПОЛЬЗУЙТЕ target = _blank в MDN. developer.mozilla.org/ en-US / docs / Web / API / - person ErickBest; 25.07.2013
comment
@ErickBest The if не имел к этому никакого отношения (он использовался, чтобы гарантировать, что щелчки были только от элементов button). Вы в основном повторяете то, что я упомянул в своем комментарии. - person alex; 26.07.2013
comment
@Alex .. Я понял твою точку зрения, братан. Однако If запрещает использование других настраиваемых строк. Раскомментируйте его и попробуйте что-нибудь вроде myNewTab, my_NewTab или _4 _... --Кнопка неактивна -. Причина, по которой я упомянул, что вы должны удалить if, заключается в том, что if обязывает строки начинаться с _ (подчеркивание), как в, это первый символ строки. //Removing it === BOOM! любая строка откроет новую вкладку или окно в зависимости от специфики браузеров, и при необходимости окно может быть повторно использовано по-разному ... Если это то, что вы также имеете в виду, то мы находимся в одной лодке. - person ErickBest; 26.07.2013
comment
Что такое type=individual? Ни эта, ни _blank часть не нужны (больше). Команда window.open по умолчанию открывает новое окно или вкладку браузера. - person erdomester; 11.01.2014
comment
Это просто вызывает всплывающее уведомление о блоке в современных браузерах, а вовсе не имитирует _blank щелчок привязки. - person Nathan Hornby; 01.10.2014
comment
всплывающее окно заблокировано браузером. - person Jitendra Pancholi; 17.03.2015