10
votes

Comment incendier l'événement personnel en JavaScript

Je ne peux pas tirer des événements personnels en utilisant JavaScript dans IE. Dans Firefox, travaillez grand.

mon code est: xxx

mais lorsque vous essayez d'exécuter document.fireevent ("eveneopersonal", evento); dans IE, il ne pas 'T Travailler. Comment puis-je tirer aucun événement personnalisé sur IE?

dans Internet Explorer I Obtenir l'erreur: "Arguments invalides" dans la ligne où exécuter document.fireevent ("evenuersonal ', evento);


2 commentaires

Frais. Que voulez-vous dire dans IE "pas de travail"? Avez-vous une erreur? Rien ne se passe-t-il mais aucune erreur?


Merci, mais je ne sais pas pourquoi j'oublie "non", parce que je suis vraiment préféré "Comment puis-je déclencher des événements personnalisés dans Internet Explorer?".


6 Réponses :


0
votes

Comme je lis la page d'article MSDN pertinente de la méthode CreateEventVeCject, il apparaît comme s'il n'est pas utilisé pour la création d'événements personnalisés - il est utilisé pour la création d'objets personnalisés pouvant être transmis à des événements déjà existants.

description : Génère un événement objet pour réussir les informations de contexte d'événement Lorsque vous utilisez le Fireeevent Méthode.

http://msdn.microsoft.com /en-us/library/ms536390%28vs.85%29.aspx

Mise à jour : vous obtenez l'erreur "arguments invalides" car "evenableOpersonal" n'est pas un événement acceptable pour tirer.


1 commentaires

Merci, mais je ne sais pas pourquoi j'oublie "Non", parce que je préférais vraiment "Comment puis-je déclencher des événements personnalisés dans Internet Explorer?"



1
votes

Vous voudrez peut-être envisager d'utiliser une bibliothèque pour résumer cela. Les deux prototypes d'une jQuery vous géreront pour vous. JQuery est particulièrement bonne pour vous permettre de créer un événement avec un code très simple.

La documentation de JQuery est disponible ici: http://docs.jquerery.com/events


1 commentaires

Oui, mais comment ces cadres mettent en œuvre des noms d'événement personnalisés dans IE?



2
votes

Je pense que la réponse est - dans IE, c'est-à-dire ne peut pas événements d'incendie qui ne figurent pas sur cette liste:

Evénements MSDN - DHTML

De ce que je peux rassembler, les cadres stockent un registre des noms d'événements "personnalisés" et vous devez utiliser leur spécifique de la mise en œuvre spécifique trigger et manipulez les fonctions pour des événements personnalisés. Par exemple, le prototype utilise l'événement OndaVAILABLE pour réussir leurs événements personnalisés dans les coulisses.


0 commentaires

39
votes

Dean Edward's décrit comment tirer des événements CutSom dans IE

http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/

C'est proche du bas de l'article xxx


3 commentaires

+1 C'est exactement ce qu'il demande, et même si c'est techniquement une solution de contournement, c'est exactement ce que l'affiche originale demandait. (bonne trouvaille!)


Une bonne réponse, j'étais en train de regarder le prototype pour voir comment ils l'ont fait (voir la réponse ci-dessous), mais c'est un excellent exemple et un article! +50 représentant attribué (quand cela me permet, dit 3 heures ...): D


Juste pour l'enregistrement, document.documentation.fakevents ++; ne fait pas d'événement surpropertychangeur sur iE9, il doit être document.documentablement.setatattribute ("FakeEvent", document.documentablement.fakevents ++);



0
votes

Ouais faisant référence à @don albrecht, vous pouvez utiliser plus de méthode JQuery AlbrechT () plus sur http: // API. jquery.com/trigger/


0 commentaires

1
votes

dans IE11 Document.Dispatchatevent toujours ne fonctionne toujours pas, mais maintenant AttachEvent est absent également, de sorte que l'autre solution ne fonctionne pas non plus. Cependant, je suis venu avec un encore plus laid. :) Cela implique de remplacer la méthode AddeventListener et se passe comme suit:

var oldEventListener = document.addEventListener;

document.addEventListener = function (event, func, capture) {
    if (event == "MyPreciousCustomEvent") {
        document.MyPreciousCustomEvent = func;
    }

    oldEventListener.call(document, event, func, capture);
};

...

$(function () {
    try {
        document.MyPreciousCustomEvent("MyPreciousCustomEvent", {});
    } catch (e) {}
});


0 commentaires