jQuery.cookies не будут загружаться динамически (с помощью jQuery getScript и т.д.)
-
28-10-2019 - |
Вопрос
Я пытаюсь создать метод удаления сеанса для файлов 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, который вызывается при загрузке страницы выхода, а затем перенаправляется обратно на login .
При ручной вставке на страницу и физическом кодировании вставленных JS-файлов это работает нормально.
Однако при динамической вставке $.getScript('/Scripts/jquery_cookies_min.js', deleteCookies());
работает некорректно.
Проблема в том, что jquery_cookies_min.js
файл НЕ загружается при выполнении обратного вызова deleteCookies
запускается, поэтому я получаю сообщение об ошибке консоли cannot call method 'filter' of undefined
.
Если я изменю скрипт, загруженный getScript
к другому скрипту, например, другой копии jQuery, затем он загружается (я вижу Chrome Network
консоль дважды отображает jQuery laoded), но она не загрузит этот файл Cookies.
Я миллион раз проверял и перепроверял правильность местоположения...и действительно, это работает, если я вручную включу JS-файл...Я также пробовал без предыдущего /
Почему этот скрипт не загружается?!
Редактировать:Я также попробовал использовать метод элемента appendChild в соответствии с тем способом, которым я загружаю jQuery...тот же результат
Решение
Потому что ваш второй параметр - это функция позвонить, а не определение функции или ссылка.
Попробуйте удалить () из deleteCookies() или используйте:
$.getScript('/path', function () { deleteCookies() });