(Nota do tradutor: este artigo resolve o problema de usar o JS para abrir uma nova página ao pressionar a tecla Ctrl)
Na especificação HTML5 simplificada, várias divs e/ou outros elementos em nível de bloco podem ser incluídos na tag A. Agora, basta embrulhar os elementos do bloco com a tag <a>, você pode resolver o problema que você precisa originalmente ouvir com JavaScript e chamar Window.Location para alcançar a função de redirecionamento da página.
No entanto, essa forma de embalagem usando a tag <a> também não está funcionando bem - por exemplo, existem algumas tags <a> em um elemento de bloco. Nesse caso, queremos apenas pular para um determinado endereço ao clicar em outras partes que não sejam <a> no pai.
Obviamente, usar um ouvinte simples como o seguinte também pode atingir nossas necessidades:
A cópia do código é a seguinte:
ALHEELEMENT.ADDeventListener ('Click', function (e) {
// Qualquer endereço de URL está ok ou você pode usar outro código para especificá -lo.
// Aqui está o atributo `data-src` dom deste elemento (atributo)
window.Location = algumElement.get ('Data-url');
});
... Mas isso às vezes tem uma experiência de usuário ruim. Quando você pressiona a tecla Ctrl (Mac é a tecla de comando) e clica com o mouse, ele abrirá o link na mesma janela (TAB). Sabendo que existe esse problema, você deve ter pensado em como resolvê -lo. Podemos conseguir isso modificando um pequeno código. Reserve algum tempo para consertar seu ouvinte:
A cópia do código é a seguinte:
ALHEELEMENT.ADDeventListener ('Click', function (e) {
// Obtenha URL
var url = algumElement.get ('dados-url');
// determinar se a tecla Ctrl foi pressionada
if (E.Metakey || e.ctrlkey || e.button === 1) {
window.open (URL);
} outro {
window.Location = url;
}
});
O autor original implementou essa função no site http://davidwalsh.name/, e você deve se lembrar disso ao usar o Window.Location for Page Redirection. Esta é uma pequena melhoria de código, mas é muito importante melhorar a usabilidade!