ti-enxame.com

<a> link não funciona clicando, só funciona pelo comando "Abrir link em nova aba"

Eu encontro esta situação interessante:

<ul>
    @foreach (var item in Model)
    {
      <li>
        <a href="@Url.Action("Details", "Product", new { id = item.Id })" >@item.Name</a>
      </li>
    }
</ul>

Quando clico em um link, nada acontece, a página Detalhes do produto não abre. Mas eu faço "Abrir link em nova aba" , então ele abre. O que pode ser a razão? 

12
Jhoon Bey

Você tem algum código javascript que está impedindo que a ação padrão da tag de âncora seja executada. Você pode inspecionar a guia Network no FireBug ou no Chrome DevTools para ver se alguma solicitação AJAXestá sendo feita quando você clica no link. Você pode tentar excluir arquivos javascript até encontrar o que está fazendo isso.

31
Darin Dimitrov

Talvez você tenha evitado o evento de redirecionamento de uma tag com JavaScript.

Por exemplo:

$(document).on('click', 'a.thatTag', function (e) {
   // ...
   e.preventDefault();
});

.preventDefault() impede o redirecionamento.

5
Maq

Corretamente dado por Darren, é definitivamente algum código javascript que está enviando uma requisição AJAX (post ou get) que está impedindo o link de funcionar como você esperaria. 

No entanto, se você usou um recurso externo, pode ser difícil corrigir o erro nos arquivos min

Sugiro usar um evento onclick jquery inline para contornar a chamada AJAX

<a href="http://foo.bar/" onclick="window.open('https://www.foo.bar/culrsteam')">Foo</a>

Você poderia adicionalmente usar window.open('https://www.foo.bar/culrsteam', '_blank') como com target='_blank'

2
Paulo

Isso pode acontecer se o endereço não tiver o protocolo de transferência dentro do atributo href. Um exemplo seria vincular localhost como <a href="localhost"></div> em vez de <a href="http://localhost"></div>. Você verá que o Google Chrome apresentará um status cancelado se isso for feito. No Safari, será exibida uma caixa de diálogo perguntando em qual aplicativo o link deve ser aberto, pois o protocolo de transferência é desconhecido. Eu encontrei este problema ao definir o link para $_SERVER['HTTP_Host'] no PHP.

Ponto-chave é, certifique-se de deixar o protocolo de transferência na frente do link seja http://, https://, ftp:// ou qualquer outra coisa.

1
djamahl

Tente este código ...

<a href="http://google.com/" onclick="location.replace('http://google.com/'),'_top'">Google</a>
1
Sujiraj R

Eu sei que esta é uma pergunta antiga, mas tendo acabado de ter um problema semelhante, parece que o problema pode ser que o seu pedido está sendo bloqueado pelo navegador. Isso pode acontecer se você estiver em um ambiente seguro (https) tentando vincular-se a um recurso inseguro (http).

Não está claro qual é o seu href, mas certifique-se de que href seja https (ou //) se seu ambiente atual estiver seguro.

0
Bangkokian