Ouverture d'un nouvel onglet en arrière-plan sans changement de focus
Dans cette question, l'utilisateur cherche à ouvrir un nouvel onglet dans un onglet séparé sans provoquer de déplacement du focus vers le nouvel onglet. Ils démontrent une tentative utilisant les méthodes open() et focus(), mais rencontrent un flash momentané du nouvel onglet avant de revenir à l'onglet actuel dans Chrome.
Cependant, la réponse fournie présente une solution alternative utilisant l'événement simulation pour contourner ce problème.
Répartition d'événements personnalisés
La clé pour obtenir ce comportement réside dans la création dynamique d'un élément et l'attribution de son attribut href à l'élément souhaité. URL. Par la suite, un événement (dans ce cas, un clic de souris) est créé et initialisé avec des paramètres spécifiques, dont le modificateur de touche "ctrl". Cela émule l'action consistant à maintenir la touche "ctrl" enfoncée tout en cliquant sur un lien, ce qui est le comportement par défaut pour ouvrir un nouvel onglet en arrière-plan.
Implémentation
Le code fourni illustre cette technique :
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); }
Conclusion
En tirant parti de la simulation d'événements, cette solution ouvre efficacement un nouvel onglet en arrière-plan sans affecter le focus de l'onglet actuel. Cette technique est particulièrement utile pour les extensions de navigateur ou les bookmarklets où il est crucial de rester concentré sur l'onglet actuel pour une expérience utilisateur transparente.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3