0

ログアウト時にCookieのセッション削除メソッドを作成しようとしています。

特定の開始キーを持つCookieを削除する必要があるため、機能する小さなJavaScriptを作成しました。

すべてのログアウトコードを1つの場所に保持しようとして、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の別のコピーに変更すると、ロードされます(ChromeNetworkコンソールにjQueryが2回ロードされていることがわかります)が、このCookieファイルはロードされません。

私は場所が正しいことを何百万回もチェックして再チェックしました...そして実際、JSファイルを手動でインクルードすると機能します...私も前のことなしで試しました/

このスクリプトがロードされないのはなぜですか?!

編集:jQueryをロードする方法に従ってappendChild要素メソッドも試しました...同じ結果

4

1 に答える 1

0

2番目のパラメーターは関数呼び出しであり、関数の定義や参照ではないためです。

deleteCookies()から()を削除するか、次を使用してみてください。

$.getScript('/path', function () { deleteCookies() });
于 2012-01-16T12:57:12.650 に答える