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.
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