Respostas:
Você pode gostar de:
window.open('url', 'window name', 'window settings')
jQuery:
$('a#link_id').click(function(){
window.open('url', 'window name', 'window settings');
return false;
});
Você também pode definir o target
para _blank
realmente.
Veja como forçar o alvo dentro de um manipulador de cliques:
$('a#link_id').click(function() {
$(this).attr('target', '_blank');
});
$(this).attr('target', '_blank');
pode ser alterada para this.target = "_blank";
Além disso, se os links âncora na página podem ser modificados para ter rel="external"
atributos, você pode criar um manipulador de clique global para a página com o seletor jQuery em a[rel="external"]
vez de ter um manipulador de cliques por link selecionado coma#link_id
você precisará usar window.open(url);
referências:
http://www.htmlcodetutorial.com/linking/linking_famsupp_120.html
http://www.w3schools.com/jsref/met_win_open.asp
Acabei de encontrar uma solução interessante para esse problema. Eu estava criando spans que contêm informações com base no retorno de um serviço da web. Pensei em tentar colocar um link ao redor do intervalo para que, se eu clicasse nele, o "a" capturasse o clique.
Mas eu estava tentando capturar o clique com o span ... então pensei por que não fazer isso quando criei o span.
var span = $('<span id="something" data-href="'+url+'" />');
Em seguida, vinculei um manipulador de cliques ao intervalo que criou um link com base no atributo 'data-href':
span.click(function(e) {
e.stopPropagation();
var href = $(this).attr('data-href');
var link = $('<a href="http://' + href + '" />');
link.attr('target', '_blank');
window.open(link.attr('href'));
});
Isso me permitiu clicar em um intervalo e abrir uma nova janela com um url adequado.
O que há de errado <a href="myurl.html" target="_blank">My Link</a>
? Não é necessário Javascript ...
esta solução também considerou o caso em que url está vazio e desabilitou (cinza) o link vazio.
$(function() {
changeAnchor();
});
function changeAnchor() {
$("a[name$='aWebsiteUrl']").each(function() { // you can write your selector here
$(this).css("background", "none");
$(this).css("font-weight", "normal");
var url = $(this).attr('href').trim();
if (url == " " || url == "") { //disable empty link
$(this).attr("class", "disabled");
$(this).attr("href", "javascript:void(0)");
} else {
$(this).attr("target", "_blank");// HERE set the non-empty links, open in new window
}
});
}
a.disabled {
text-decoration: none;
pointer-events: none;
cursor: default;
color: grey;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<a name="aWebsiteUrl" href="http://www.baidu.com" class='#'>[website]</a>
<a name="aWebsiteUrl" href=" " class='#'>[website]</a>
<a name="aWebsiteUrl" href="http://www.alibaba.com" class='#'>[website]</a>
<a name="aWebsiteUrl" href="http://www.qq.com" class='#'>[website]</a>
Esteja ciente se você deseja executar solicitações AJAX dentro da função de manipulador de eventos para o evento click. Por algum motivo, o Chrome (e talvez outros navegadores) não abrirá uma nova guia / janela.
Esta não é uma solução muito boa, mas funciona:
CSS:
.new-tab-opener
{
display: none;
}
HTML:
<a data-href="http://www.google.com/" href="javascript:">Click here</a>
<form class="new-tab-opener" method="get" target="_blank"></form>
Javascript:
$('a').on('click', function (e) {
var f = $('.new-tab-opener');
f.attr('action', $(this).attr('data-href'));
f.submit();
});
Exemplo ao vivo: http://jsfiddle.net/7eRLb/
O Microsoft IE não oferece suporte a um nome como segundo argumento.
window.open('url', 'window name', 'window settings');
O problema é window name
. Isso vai funcionar:
window.open('url', '', 'window settings')
A Microsoft permite apenas os seguintes argumentos, se usar esse argumento: