JavaScript: location.href para abrir em uma nova janela / guia?

389

Eu tenho um arquivo JavaScript de um desenvolvedor de terceiros. Tem um link has que substitui a página atual pelo destino. Quero que esta página seja aberta em uma nova guia.

Isto é o que eu tenho até agora:

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

Alguém pode me ajudar?

iamjonesy
fonte

Respostas:

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.
);
alex
fonte
102
Vale mencionar: se uma nova guia ou janela é criada, é decidido pelo navegador (configuração).
JANDY
4
@alex Eu editei esta resposta para tornar o bit mais legível. Se você não aprovar minha formatação, sugiro encurtar o URL para que o segundo parâmetro caiba na região de rolagem?
Phrogz
5
@ErickBest Isso está incorreto. "_blank"garante que a janela / guia será nova. Qualquer outra coisa (além dos outros nomes especiais) está dando a essa janela o nome específico e os links subsequentes para esse destino reutilizarão a janela. jsFiddle .
alex
2
Isso apenas aciona uma notificação de bloqueio pop-up em navegadores modernos, não simula um _blankclique de ancoragem.
Nathan Hornby
22
pop-up impedido pelo navegador.
Jitendra Pancholi
24

Se você deseja usar location.hrefpara evitar problemas de pop-up, pode usar um<a> referência e, em seguida, usar o javascript para clicar nela.

algo como em HTML

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

Em seguida, clique no javascript da seguinte forma

document.getElementById("anchorID").click();
campo de andrew
fonte
13
Eu estava esperançoso por esta solução, no entanto, ainda parece acionar o bloco pop-up (pelo menos no Chrome). Sinto que o navegador está ciente de que é um clique em javascript e o trata de maneira diferente.
Nathan Hornby
11
Obrigado Nathan. Você está bem correto. Você ainda recebe uma mensagem de bloqueio pop-up. Eu pensei que tinha curado. Em teoria, deveria ter funcionado. Andrew
andrew field
2
$("#anchorID")[0].click(); para usar esta solução com o jquery.
theBell 22/09/16
11
Lol theBell, não é jQuery se você está acessando diretamente DOM Elemento[0]
Andre Figueiredo
7

Você pode abri-lo em uma nova janela com window.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');. Se você deseja abri-lo em uma nova guia, abra a página atual em duas guias e, em seguida, permita que o script seja executado para que a página atual e a nova sejam obtidas.

user616639
fonte
6

Alternativa js pura para window.open

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

aqui está um exemplo de trabalho (os snippets stackoverflow não permitem a abertura)

Kamil Kiełczewski
fonte
0

Por exemplo:

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

    });

Exemplo de trabalho .


fonte
Pop-up impedido pelo navegador.
precisa saber é o seguinte
11
Isso significa que você tem um bloco de anúncios ou outra coisa que o bloqueia. O comportamento padrão deve estar funcionando em condições normais
Andrey Seregin 13/11/19
0

Você também pode abrir uma nova guia chamando para um método de ação com parâmetro como este:

   var reportDate = $("#inputDateId").val();
   var url = '@Url.Action("PrintIndex", "Callers", new {dateRequested = "findme"})';
   window.open(window.location.href = url.replace('findme', reportDate), '_blank');
Primoshenko
fonte
A primeira e a segunda linha são necessárias? Não vai funcionar sem as variáveis reportDatee url?
Learn for Fun
Você pode remover o parâmetro (reportDate), mas o URL var é importante porque contém a chamada para o método de ação.
Primoshenko