Comment déclencher un événement javascript personnalisé dans IE8?

Je suis en train de déclencher un événement personnalisé sur IE8 et tripoter une solution de ici et ici. Mais je ne peux pas le faire fonctionner...

Je suis à l'aide de jquery mobile avec requireJS et google analytics. Je suis donc suivi le JQM pageshow événement. Toutefois, depuis requireJS charge des scripts async, ma liaison à pageshow doit être faite dans un javascript "wrapper", sinon il va produire une erreur, parce que ni jquery ni jquery mobile aura été chargé par le temps, l'extrait est analysé.

Donc je suis en train de faire, y compris à la fin de chaque page:

if (document.addEventListener) {
    document.addEventListener("jqmReady",function(){trigAnalytics("jqmReady");alert("FF detected")},false); 
} else if ( document.attachEvent ) {
    document.attachEvent("jqmReady", function(){trigAnalytics("jqmReady");alert("IE detected")}); 
}

Et quand il est détecté, je vais allumer ma analytics extrait avec le pageshow de liaison:

var trigAnalytics = function( trigger ){ 
    $(document).on('pageshow','div:jqmData(role="page").basePage', function (event, ui) {
        var url = location.href; 
        try { 
            hash = location.hash; 
            if (hash && hash.length > 1) {
                 _gaq.push(['_trackPageview', hash.substr(1)]);
                 _gaq.push(['_setCustomVar', 1, 'id_external', ########, 1 ]);
            } else {
                _gaq.push(['_trackPageview', url]);
                _gaq.push(['_setCustomVar', 1, 'id_external', ########, , 1 ]);
                _gaq.push(['b._trackPageview', url]);
            } 
        } catch(err) { } 
    }); 
    if (typeof _gaq !== "undefined" && _gaq !== null) { 
        $(document).ajaxSend(function(event, xhr, settings){ 
            _gaq.push(['_trackPageview', settings.url]); 
            _gaq.push(['b._trackPageview', settings.url]);
        }); 
    } 
}; 

Donc pour le coup de l'événement de la chaîne, j'ai besoin de déclencher jqmReady quand JQM est prêt. JQM utilise leur mobileinit événement pour indiquer cela. Donc, à l'intérieur de mon contrôleur d'application de l'init, je suis de liaison à elle de la sorte:

$(document).bind("mobileinit", function () {

    //non-IE OK
    if (document.createEvent) {
        evt = document.createEvent("Event");
        evt.initEvent("jqmReady", true, true);
        document.dispatchEvent(evt);

    } else if (document.createEventObject) { 
    //MSIE (NOT WORKING)

        document.documentElement.evt = 0; //an expando property
        document.documentElement.attachEvent("jqmReady", function () {
            document.documentElement.evt = document.documentElement.evt + 1;
            });
    }
});

J'ai essayé tout simplement de déclenchement $(window).trigger('jqmReady'), parce que quand mobileinit déclencheurs, jquery est disponible. Cependant, il semble événements créés dans addEventListener ne peut pas être déclenchée, comme cela, j'ai donc besoin d'un javascript seule solution pour déclencher un événement personnalisé dans IE.

Question:
Quelqu'un peut-il me donner un pointeur sur la façon de déclencher un script javascript événement personnalisé pour IE8 correctement?

source d'informationauteur frequent