Pergunta

Estou tentando criar um método de exclusão de sessão para cookies ao sair.

Cookies com uma determinada tecla de início precisam ser excluídos, então criei um pequeno javascript que funciona.

Tentando manter todo o meu código de logout em um só lugar, estou tentando adicionar o Javascript dinamicamente.

No meu Code Behind, estou fazendo o seguinte:

    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 é o Javascript a ser chamado quando a página de logout é carregada, isso redireciona de volta para o login.

Quando inserido manualmente na página e codificando fisicamente os arquivos JS inseridos, funciona bem.

No entanto, quando inserido dinamicamente, o $.getScript('/Scripts/jquery_cookies_min.js', deleteCookies()); não está funcionando corretamente.

O problema é que o arquivo jquery_cookies_min.js NÃO é carregado quando o retorno de chamada para executar deleteCookies é disparado, então recebo um erro de console cannot call method 'filter' of undefined.

Se eu mudar o script carregado por getScript para um script diferente, outra cópia do jQuery por exemplo, ele carrega (posso ver que o console Network do Chrome mostra jQuery laoded duas vezes), mas não carrega este arquivo Cookies.

Eu verifiquei e verifiquei duas vezes se o local está correto ... e de fato, funciona se eu incluir manualmente o arquivo JS ... Também tentei sem o / anterior

Por que este script não está carregando ?!

EDITAR: Também tentei com o método do elemento appendChild de acordo com a maneira como estou carregando o jQuery ... mesmo resultado

Foi útil?

Solução

Porque seu segundo parâmetro é uma chamada de função , não uma definição ou referência de função.

Tente remover o () de deleteCookies () ou use:

$.getScript('/path', function () { deleteCookies() });
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top