Déclencher un clic sur un bouton à partir d'un non-élément de bouton
Comment feriez-vous pour déclencher un événement de clic à partir d'un élément qui soi-disant n'a pas natif cliquable comportements?
Par exemple, je sais que vous pouvez simplement utiliser les éléments suivants:
document.getElementById('x').click();
Mais qu'advient-il si 'x' est un 'DIV'? J'ai une mise en œuvre, et il ne semble pas déclencher... je reçois le message d'erreur (chrome 12):
Uncaught TypeError: Object #<HTMLDivElement> has no method 'click'
Idées?
D'Édition rapide - je suis à la recherche de vanille JS ici... j'aime réinventer la roue à mon image... 🙂
- Lire le jQuery source et de voir comment ils le font.
- La bonne, HTML5 méthode est
click
mais je vois ce même problème dans Chrome 12. - Lol, Bon point... Vaut une recherche...
- double possible de Comment faire pour simuler le clic de la souris à l'aide de Javascript?
Vous devez vous connecter pour publier un commentaire.
Pour classique cliquable éléments comme des boutons ou des liens,
click()
devrait fonctionner dans tous les navigateurs. Toutefois, pour les autres éléments comme les divs, vous avez besoinonclick()
dans certains navigateurs etclick()
dans d'autres.Je vous recommande fortement qu'au lieu d'essayer de comprendre cela pour vous-même, vous utilisez une bibliothèque javascript comme MooTools, jQuery, Prototype, YUI, ou beaucoup d'autres. La raison en est que l'obtention de ce genre de choses à droite de la croix-navigateur est dur. Pourquoi perdre votre temps alors que d'autres ont travaillé et travaillé pour obtenir ce droit et de le rendre super simple à utiliser? Je vous garantis que si vous passez votre temps à apprendre à utiliser un framework, vous obtiendrez plus loin dans votre développement javascript compétences plus rapidement. Plus tard, vous pouvez revenir et de voir comment tout cela se fait dans le nitty gritty si vous le souhaitez.
Cela dit, voici le script qui va le travail de la croix-navigateur, et ne rien faire si aucune de ces propriétés ont une fonction qui lui est assignée:
Vous pourriez aussi le faire, mais c'est peut-être un peu moins claire:
Certains tests empiriques de tir à l'événement click sur un div:
onclick
.onclick
(comme bagage en v. 12.0.742.100).onclick
.Script de Test:
Exécuter ce développeur d'outils dans votre navigateur, ou
javascript:
à l'avant etvoid(0);
à la fin puis coller dans la barre d'adresse et appuyez sur Entrée. Ensuite, essayezd.click()
etd.onclick()
. Vous pouvez cliquer sur le div de lui-même pour prouver qu'il fonctionne avec de vrais clics trop.Vous aurez besoin de détecter que les différents navigateurs (à l'aide de non-doctype html5) peut prendre en charge différentes méthodes du dom:
Utilisez cette option si vous voulez déclencher un événement du programme:
Vous pouvez joindre un onclick méthode à rien, mais si vous n'avez pas tous les événements attachés à la réelle de l'élément lui-même, il fera des erreurs, ou tout simplement ne rien faire.
Essayer de faire quelque chose comme ce qui suit:
J'ai eu un problème similaire lors de la tentative d'utiliser l' .cliquez sur la méthode de stock d'android navigateurs. Semble comme remplaçant .cliquez avec
$('selector').on('click', cb);
résout le problème.