stopPropagation () ne fonctionne pas dans IE

Il semble que votre problème soit causé par une différence dans le traitement de l’object event dans IE. Dans IE9 et les versions antérieures, l’object événement n’est pas une variable locale dans le contexte du gestionnaire d’événements, mais une variable globale.

Au lieu d’appeler directement event.stopPropagation() , essayez d’abord ceci:

 event = event || window.event; event.stopPropagation(); 

IE9 remplit apparemment l’object window.event la place de la variable locale.


Un meilleur moyen consiste à utiliser jQuery pour lier des événements à des boutons et à ne jamais utiliser l’atsortingbut onclick en HTML. Comme indiqué dans les commentaires, jQuery normalisera l’object événement afin qu’il soit accessible à partir d’une interface commune. Un exemple de ceci serait:

HTML:

 < month 

Javascript avec jQuery:

 $("#prevMonthBtn").click(dateChange); 

Vous pouvez trouver un autre moyen de transmettre les arguments formattedDate in.

Ce qui se passe ici, c’est que cet événement n’entre pas dans le champ de dateChange. Cela fonctionne dans certains navigateurs car ils le rendent disponible pour la fonction qui appelle dateChange mais IE ne le fait pas.

La racine du problème est que vous n’ajoutez pas vos liens “correctement”. Il serait préférable de ne pas générer de code HTML comme vous le faites avec votre setVar , ni de générer des éléments DOM avec jQuery, ce qui ressemblerait à ceci:

 var $prev_container = $( ' 

La raison en est que vous avez le plein contrôle de la scope de vos fonctions de gestion des événements tout en découplant votre balisage de votre javascript.

Je pense que dans la plupart des cas, lorsque vous utilisez onClick et que vous écrivez des balises à partir de js, vous devez vous arrêter et y penser car il existe presque toujours un moyen de le faire en interagissant directement avec le DOM.

J’espère que ça aide!

//event.stopPropagation (); -> Commenter cette ligne

// Ajouter en dessous de la ligne

(event.stopPropagation)? event.stopPropagation (): event.cancelBubble = true;