Maison > interface Web > tutoriel CSS > Pourquoi le survol de la souris JavaScript ne déclenche-t-il pas toujours CSS :hover ?

Pourquoi le survol de la souris JavaScript ne déclenche-t-il pas toujours CSS :hover ?

Linda Hamilton
Libérer: 2024-12-22 14:34:27
original
695 Les gens l'ont consulté

Why Doesn't JavaScript Mouseover Always Trigger CSS :hover?

Simulation du survol de la souris et déclenchement de la déclaration CSS ":hover"

Introduction au problème

Certains développeurs ont rencontré un problème en essayant de simuler la fonctionnalité de survol de la souris en mode pur JavaScript ne déclenche pas la déclaration de survol CSS, malgré le déclenchement de l'écouteur de survol de la souris. Cet article cherche à relever ce défi et à explorer des solutions potentielles.

Explication des niveaux de confiance des événements

Au cœur du problème se trouve le concept de niveaux de confiance des événements dans le navigateur. Les événements déclenchés par une interaction de l'utilisateur ou des modifications apportées au DOM sont considérés comme des événements approuvés et disposent de certains privilèges. En revanche, les événements générés par le code JavaScript via les méthodes DocumentEvent.createEvent ou EventTarget.dispatchEvent sont considérés comme des événements non fiables.

Restrictions sur les événements non fiables

L'absence de styles de déclenchement de « survol » pour les événements non fiables est dû à des restrictions de sécurité. Les navigateurs limitent les actions par défaut déclenchées par des événements non fiables, à l'exception de celles comme click ou DOMActivate. Il s'agit d'une mesure délibérée visant à empêcher un code malveillant de simuler les interactions des utilisateurs et de compromettre potentiellement la sécurité.

Solution : ajout manuel de classes CSS

Pour simuler les effets de survol de la souris, la solution réside dans l'ajout et la suppression manuels de CSS classes lorsque les événements de survol et de sortie de souris sont détectés. Cette approche déclenche efficacement la déclaration CSS ":hover" sans s'appuyer sur des événements non fiables. Voici un exemple d'implémentation :

// Simulate mouseover effect
element.addEventListener("mouseover", () => {
  element.classList.add("hover");
});

// Simulate mouseout effect
element.addEventListener("mouseout", () => {
  element.classList.remove("hover");
});
Copier après la connexion

En implémentant cette solution, vous pouvez simuler l'événement de survol de la souris et déclencher les styles de survol CSS souhaités sans violer les restrictions de sécurité du navigateur.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal