"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como abrir uma nova guia em segundo plano sem mudar o foco?

Como abrir uma nova guia em segundo plano sem mudar o foco?

Publicado em 2024-11-08
Navegar:983

How to Open a New Tab in the Background Without Switching Focus?

Abrindo uma nova aba em segundo plano sem mudança de foco

Nesta questão, o usuário busca abrir uma nova aba em uma aba separada sem causar qualquer mudança de foco para a nova guia. Eles demonstram uma tentativa de usar os métodos open() e focus(), mas encontram um flash momentâneo da nova guia antes de retornar à guia atual no Chrome.

No entanto, a resposta fornecida apresenta uma solução alternativa usando evento simulação para contornar esse problema.

Custom Event Dispatch

A chave para alcançar esse comportamento está na criação dinâmica de um elemento e na atribuição de seu atributo href ao elemento desejado URL. Posteriormente, um evento (neste caso, um clique do mouse) é criado e inicializado com parâmetros específicos, incluindo a tecla modificadora “ctrl”. Isso emula a ação de manter pressionada a tecla "ctrl" enquanto clica em um link, que é o comportamento padrão para abrir uma nova guia em segundo plano.

Implementação

O código fornecido exemplifica esta técnica:

function openNewBackgroundTab(){
    var a = document.createElement("a");
    a.href = "http://www.google.com/";
    var evt = document.createEvent("MouseEvents");
    //the tenth parameter of initMouseEvent sets ctrl key
    evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
                                true, false, false, false, 0, null);
    a.dispatchEvent(evt);
}

Conclusão

Ao aproveitar a simulação de eventos, esta solução abre efetivamente uma nova guia em segundo plano sem afetar o foco da guia atual. Essa técnica é particularmente útil para extensões de navegador ou bookmarklets, onde manter o foco na guia atual é crucial para uma experiência de usuário perfeita.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3