Pregunta

Estoy intentando crear un método de eliminación de sesión para cookies al cerrar sesión.

Las cookies con una determinada clave de inicio deben eliminarse, por eso he creado un pequeño javascript que funciona.

Al intentar mantener todo mi código de cierre de sesión en un solo lugar, intento agregar Javascript dinámicamente.

En mi Código Detrás, estoy haciendo lo siguiente:

    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)

Obviamente, logoutJS es el Javascript que se llamará cuando se cargue la página de cierre de sesión, esto luego redirigirá nuevamente para iniciar sesión.

Cuando se inserta manualmente en la página y se codifican físicamente los archivos JS insertados, esto funciona bien.

Sin embargo, cuando se inserta dinámicamente, el $.getScript('/Scripts/jquery_cookies_min.js', deleteCookies()); no está funcionando correctamente.

El problema es que el jquery_cookies_min.js El archivo NO se carga cuando se ejecuta la devolución de llamada. deleteCookies se activa por lo que aparece un error de consola cannot call method 'filter' of undefined.

Si cambio el script cargado por getScript a un script diferente, otra copia de jQuery, por ejemplo, luego se carga (puedo ver el archivo Chrome Network La consola muestra jQuery cargado dos veces), pero no cargará este archivo de cookies.

He verificado y verificado dos veces un millón de veces que la ubicación es correcta...y de hecho, funciona si incluyo manualmente el archivo JS...También lo intenté sin el anterior. /

¿Por qué no se carga este script?

EDITAR:También probé con el método del elemento appendChild según la forma en que estoy cargando jQuery...mismo resultado

¿Fue útil?

Solución

Porque tu segundo parámetro es una función. llamar, no una definición o referencia de función.

Intente eliminar () de deleteCookies() o use:

$.getScript('/path', function () { deleteCookies() });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top