Question

J'essaie de créer une méthode de suppression de session pour les cookies sur la déconnexion.

Les cookies avec une certaine clé de démarrage doivent être supprimés, j'ai donc fait un petit javascript qui fonctionne.

Essayant de garder tout mon code de déconnexion en un seul endroit, j'essaie d'ajouter le JavaScript dynamiquement.

Dans mon code derrière, je fais ce qui suit:

    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)

De toute évidence, LogoutJs est le JavaScript à être appelé lorsque la page de déconnexion se charge, ce qui redirige ensuite vers la connexion.

Lorsqu'il est inséré manuellement dans la page et codant physiquement les fichiers JS insérés, cela fonctionne bien.

Cependant, lorsqu'il est inséré dynamiquement, le $.getScript('/Scripts/jquery_cookies_min.js', deleteCookies()); ne fonctionne pas correctement.

Le problème est, le jquery_cookies_min.js Le fichier n'est pas chargé lorsque le rappel à exécuter deleteCookies est licencié donc je reçois une erreur de console cannot call method 'filter' of undefined.

Si je change le script chargé par getScript À un autre script, une autre copie de jQuery par exemple, puis elle se charge (je peux voir le chrome Network Console montre JQuery Laoded deux fois), mais il ne chargera pas ce fichier de cookies.

J'ai vérifié et vérifié un million de fois que l'emplacement est correct ... et en effet, cela fonctionne si j'inclut manuellement le fichier JS ... j'ai également essayé sans le précédent /

Pourquoi ce script ne se charge pas ?!

EDIT: J'ai également essayé avec la méthode de l'élément APPENDCHILD selon la manière dont je charge jQuery ... même résultat

Était-ce utile?

La solution

Parce que votre deuxième param appel, pas une définition ou une référence de fonction.

Essayez de supprimer le () de DeleteCookies () ou d'utiliser:

$.getScript('/path', function () { deleteCookies() });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top