Maison >interface Web >js tutoriel >Comment ouvrir un nouvel onglet en arrière-plan sans changer de focus ?

Comment ouvrir un nouvel onglet en arrière-plan sans changer de focus ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-10 00:26:02906parcourir

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

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 en attribuant son attribut href à l'URL souhaitée. 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 cela 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 maintenir le focus sur l'onglet actuel pour une expérience utilisateur fluide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn