Wie löse ich ein benutzerdefiniertes JavaScript-Ereignis in IE8 aus?

Ich versuche, ein benutzerdefiniertes Ereignis auf IE8 auszulösen und eine Lösung aus zu fummelnHier undHier. Aber ich kann es nicht zum Laufen bringen ...

Ich verwende jquery mobile mit requireJS und google analytics. Also verfolge ich den JQMpageshow Veranstaltung. Da jedoch requireJS Skripte asynchron lädt, muss meine Bindung an pageshow in einem Javascript "Wrapper" erfolgen, da sonst ein Fehler auftritt, da zum Zeitpunkt des Parsens des Snippets weder jquery noch jquery mobile geladen wurden.

Also schreibe ich dies am Ende jeder Seite ein:

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")}); 
}

Und wenn es entdeckt wird, feuere ich mein Analytics-Snippet mit der Seitenbindung ab:

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]);
        }); 
    } 
}; 

Um die Ereigniskette zu beenden, muss ich auslösenjqmReady wenn JQM bereit ist. JQM verwendet ihremobileinit Ereignis, um genau das anzuzeigen. In meinem Anwendungscontroller init binde ich mich also wie folgt daran:

$(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;
            });
    }
});

Ich habe gerade versucht, $ (window) .trigger ('jqmReady') auszulösen, weil wannmobileinit Trigger, JQuery ist verfügbar. Es scheint jedoch Ereignisse in erstelltaddEventListener kann nicht wie folgt ausgelöst werden, daher benötige ich eine Nur-Javascript-Lösung, um ein benutzerdefiniertes Ereignis im IE auszulösen.

Frage:
Kann mir jemand einen Hinweis geben, wie ein benutzerdefiniertes JavaScript-Ereignis für IE8 korrekt ausgelöst wird?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage