JavaScript: location.href, щоб відкрити у новому вікні / вкладці?


389

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

Ось що я маю досі:

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

Хтось може мені допомогти?

Відповіді:


930
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-адресу, щоб другий параметр вписався в нерозгорнуту область?
Фрогз

5
@ErickBest Це неправильно. "_blank"гарантує, що вікно / вкладка буде новим. Все інше (окрім інших спеціальних імен) дає цьому вікну конкретне ім'я, і ​​наступні посилання на цю ціль повторно використовуватимуть вікно. jsFiddle .
alex

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
Дякую, Натане Ви цілком правильні. Ви все ще отримуєте спливаюче повідомлення блоку. Я думав, що це вилікував. Теоретично це мало працювати. Andrew
andrew field

2
$("#anchorID")[0].click(); використовувати це рішення з jquery.
theBell

1
Lol theBell, це не jQuery, якщо ви звертаєтесь безпосередньо до DOM Element[0]
Andre Figueiredo

7

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


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
Це означає, що у вас є або adblock, або щось інше, що блокує його. Поведінка за замовчуванням повинна працювати в нормальних умовах
Андрій

0

Ви також можете відкрити нову вкладку із закликом до способу дії з таким параметром:

   var reportDate = $("#inputDateId").val();
   var url = '@Url.Action("PrintIndex", "Callers", new {dateRequested = "findme"})';
   window.open(window.location.href = url.replace('findme', reportDate), '_blank');

Чи потрібні перший і другий рядок? Не буде працювати без змінних reportDateта urlзмінних?
Дізнайтеся про забави

Ви можете вийняти параметр (reportDate), але var-var важливий, оскільки він містить виклик методу дії.
Примошенко
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.