Domanda

Sto cercando di creare un metodo di cancellazione della sessione per i cookie sul logout.

I cookie con una certa chiave di avvio devono essere cancellati, quindi ho fatto un piccolo JavaScript che funziona.

Cercando di mantenere tutto il mio codice di errore in un posto, sto cercando di aggiungere dinamicamente il JavaScript.

Nel mio codice dietro, sto facendo quanto segue:

    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)
.

Ovviamente LogoutJS è il JavaScript per essere chiamato quando la pagina di disconnessione viene caricata, questo quindi reindirizza al login.

Se inserito manualmente nella pagina e codifica fisicamente i file JS inseriti, funziona bene.

Tuttavia, quando inserito dinamicamente, il $.getScript('/Scripts/jquery_cookies_min.js', deleteCookies()); non funziona correttamente.

Il problema è che il file jquery_cookies_min.js non viene caricato quando viene sparato il callback da eseguire deleteCookies in modo da ottenere un errore di console cannot call method 'filter' of undefined.

Se modifico lo script caricato da getScript in uno script diverso, ad esempio un'altra copia di jQuery, quindi viene caricata (posso vedere la console di Chrome Network mostra jQuery Laoded due volte), ma non caricherà questo file di cookie.

Ho controllato e ricontrollato un doppio controllato un milione di volte in cui la posizione è corretta ... e infatti, funziona se includo manualmente il file JS ... Ho anche provato senza il precedente /

Perché questo script non è caricato ?!

EDIT: Ho anche provato con il metodo dell'elemento Appendchild secondo il modo in cui sto caricando jQuery ... stesso risultato

È stato utile?

Soluzione

Perché il secondo parametro è una chiamata di una funzione, non una definizione o un riferimento di funzione.

Prova a rimuovere () da deleteCookies () o usa:

$.getScript('/path', function () { deleteCookies() });
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top