jQuery.cookies не будет загружаться динамически (с помощью jQuery getScript и т. д.) - PullRequest
0 голосов
/ 16 января 2012

Я пытаюсь создать метод удаления сеанса для файлов cookie при выходе из системы.

Необходимо удалить файлы cookie с определенным ключом запуска, поэтому я сделал небольшой работающий javascript.

Пытаясь сохранить весь мой код выхода из системы, я пытаюсь динамически добавлять Javascript.

В своем коде я делаю следующее:

    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)

Очевидно, logoutJS - это Javascript, который вызывается при загрузке страницы выхода из системы, затем перенаправляется обратно на страницу входа.

При ручной вставке на страницу и физическом кодировании вставленных файлов JS это работает нормально.

Однако при динамической вставке $.getScript('/Scripts/jquery_cookies_min.js', deleteCookies()); работает неправильно.

Проблема в том, что файл jquery_cookies_min.js НЕ загружается при запуске обратного вызова для запуска deleteCookies, поэтому я получаю сообщение об ошибке консоли cannot call method 'filter' of undefined.

Если я изменю скрипт, загруженный с помощью getScript, на другой скрипт, например, другую копию jQuery, он загружается (я вижу, что консоль Chrome Network показывает дважды загруженный jQuery), но не загружается этот файл cookie.

Я проверил и дважды проверил миллион раз, что местоположение правильное ... и действительно, оно работает, если я вручную включаю файл JS ... Я также пытался без предыдущего /

Почему этот скрипт не загружается?!

РЕДАКТИРОВАТЬ: я также пытался с помощью метода элемента appendChild, как я загружаю jQuery ... тот же результат

1 Ответ

0 голосов
/ 16 января 2012

Поскольку ваш второй параметр - это функция вызов , а не определение функции или ссылка.

Попробуйте удалить () из deleteCookies () или используйте:

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