Frage

Ich versuche, eine Methode zum Löschen von Sitzungen für Cookies beim Abmelden zu erstellen.

Cookies mit einem bestimmten Startschlüssel müssen gelöscht werden, daher habe ich ein kleines Javascript erstellt, das funktioniert.

Ich versuche, meinen gesamten Abmeldecode an einem Ort zu behalten, und versuche, das Javascript dynamisch hinzuzufügen.

In meinem Code Behind mache ich Folgendes:

    Dim logoutJS As String = ""
    logoutJS += "function loadJQuery(callback) {  "
    logoutJS += "var addJquery = document.createElement('script'); " '// add jQuery to document
    logoutJS += "addJquery.onload = callback;  "
    logoutJS += "addJquery.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'; "
    logoutJS += "document.getElementsByTagName('head')[0].appendChild(addJquery); "
    logoutJS += "  }; "
    logoutJS += "function loadCookies() { " '// now jQuery is loaded we can used getScript
    logoutJS += "$.getScript('/Scripts/jquery_cookies_min.js', deleteCookies()); "
    logoutJS += "  };"
    logoutJS += "function deleteCookies() { "  
    logoutJS += "var cookieSettings = $.cookies.filter(/^hgAdmin/); "
    logoutJS += "$.each(cookieSettings, function (cookieName, content) { "
    logoutJS += "$.cookies.del(cookieName); });        "
    logoutJS += "window.location = ('/login.aspx'); };"
    logoutJS += "loadJQuery(function() { loadCookies(); }); "

    Common.logOut(Session)
    ScriptManager.RegisterStartupScript(form1, GetType(HtmlGenericControl), "form1", logoutJS, True)

Offensichtlich ist logoutJS das Javascript, das beim Laden der Abmeldeseite aufgerufen werden soll. Anschließend wird logoutJ zurückgeleitet

Wenn Sie manuell in die Seite einfügen und die eingefügten JS-Dateien physisch codieren, funktioniert dies einwandfrei.

Beim dynamischen Einfügen funktioniert der $.getScript('/Scripts/jquery_cookies_min.js', deleteCookies()); jedoch nicht richtig.

Das Problem ist, dass die jquery_cookies_min.js-Datei NICHT geladen wird, wenn der Rückruf zum Ausführen von deleteCookies ausgelöst wird, sodass ein Konsolenfehler cannot call method 'filter' of undefined angezeigt wird.

Wenn ich das von getScript geladene Skript in ein anderes Skript ändere, beispielsweise eine andere Kopie von jQuery, wird es geladen (in der Chrome-Network-Konsole wird jQuery zweimal angezeigt), diese Cookies-Datei wird jedoch nicht geladen.

Ich habe millionenfach überprüft und doppelt überprüft, ob der Speicherort korrekt ist ... und tatsächlich funktioniert es, wenn ich die JS-Datei manuell einbinde ... Ich habe es auch ohne den vorhergehenden / versucht

Warum wird dieses Skript nicht geladen?!

BEARBEITEN: Ich habe es auch mit der appendChild-Elementmethode versucht, wie ich jQuery lade ... dasselbe Ergebnis

War es hilfreich?

Lösung

Da Ihr zweiter Parameter ein Funktionsaufruf ist , keine Funktionsdefinition oder Referenz.

Versuchen Sie, () aus deleteCookies () zu entfernen, oder verwenden Sie:

$.getScript('/path', function () { deleteCookies() });

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top