مسج.لن يتم تحميل ملفات تعريف الارتباط ديناميكيا (مع مسج جيتسكريبت الخ)
-
28-10-2019 - |
سؤال
أحاول إنشاء طريقة حذف جلسة لملفات تعريف الارتباط عند تسجيل الخروج.
يجب حذف ملفات تعريف الارتباط التي تحتوي على مفتاح بدء معين ، لذلك قمت بعمل القليل من جافا سكريبت الذي يعمل.
في محاولة للحفاظ على كل رمز الخروج الخاص بي في مكان واحد ، أحاول إضافة جافا سكريبت ديناميكيا.
في رمز بلدي وراء ، وأنا أفعل ما يلي:
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)
من الواضح لوغوتجس هو جافا سكريبت ليتم استدعاؤها عند تحميل صفحة الخروج ، وهذا ثم إعادة توجيه مرة أخرى لتسجيل الدخول.
عند إدراجها يدويا في الصفحة وترميز جسديا ملفات جس المدرجة ، وهذا يعمل بشكل جيد.
ومع ذلك ، عند إدراجها ديناميكيا ، فإن $.getScript('/Scripts/jquery_cookies_min.js', deleteCookies());
لا يعمل بشكل صحيح.
المشكلة هي أن jquery_cookies_min.js
لا يتم تحميل الملف عند تشغيل رد الاتصال deleteCookies
أطلقت حتى أحصل على خطأ وحدة التحكم cannot call method 'filter' of undefined
.
إذا قمت بتغيير البرنامج النصي تحميلها من قبل getScript
إلى برنامج نصي مختلف ، نسخة أخرى من مسج على سبيل المثال ، ثم يقوم بتحميل (أستطيع أن أرى كروم Network
وحدة التحكم يظهر مسج لاود مرتين) ، لكنه لن تحميل هذا الملف الكوكيز.
لقد راجعت ودققت ضعف مليون مرة أن الموقع هو الصحيح...وبالفعل ، فإنه يعمل إذا كنت يدويا تضمين ملف جس...لقد حاولت أيضا دون السابق /
لماذا لا يتم تحميل هذا البرنامج النصي?!
تحرير:لقد حاولت أيضا مع طريقة عنصر أدفينتشيلد وفقا للطريقة التي أنا تحميل مسج...نفس النتيجة
المحلول
لأن المعلمة الثانية الخاصة بك هي وظيفة اتصل, ، وليس تعريف وظيفة أو مرجع.
حاول إزالة () من ديليتكوكيس () أو استخدام:
$.getScript('/path', function () { deleteCookies() });