【问题标题】:Javascript clear all cookiesJavascript 清除所有 cookie
【发布时间】:2016-09-21 14:47:11
【问题描述】:

我正在尝试清除我的所有 cookie,其中一些设置在服务器上,其中一些是浏览器 cookie。

我尝试过使用 document.cookie = "" 但这并不能满足我的需求,所以我编写了一些 Javascript 代码,如下所示

pauseClearAllCookies 函数被称为 onload。

<script type="text/javascript">

        //var cookie_names = new Array("__utma", "__utmb", "__utmc", "__utmz", "mortgage", "track_source","currency","selenium_testing","visit_secure_token", "rdb_history", "_csuid", "search", "finance", "searchhistory");

        function pauseClearAllCookies(){
            Set_Cookie("selenium_testing","1");
            drawTable();
            setTimeout("checkCookies();",1000);
            document.getElementById('msg').innerHTML = "Gathering Cookies....";
        }

        var cookie_counter = 0;
        var cookieList;

        function checkCookies(){
            if(document.cookie.indexOf(";") != -1){
                cookieList = document.cookie.split(";");
            }else{
                cookieList = [document.cookie];
            }
            setTimeout("clearAllCookies();",1000);
        }

        function clearAllCookies(){

            document.getElementById('msg').innerHTML = "Deleting Cookies....";

            if(cookie_counter < cookieList.length ){

                var cookieName = "";

                if(cookieList[cookie_counter].indexOf("=") != -1){
                    cookieName = cookieList[cookie_counter].split("=")[0];
                }else{
                    cookieName = cookieList[cookie_counter];
                }
                document.getElementById('msg').innerHTML = "Deleting Cookie: "+cookieName;
                // clear js cookies
                Delete_Cookie(cookieName, '/', document.domain);
                Delete_Cookie(cookieName, '/', '.www.abc.co.uk');
                Delete_Cookie(cookieName, '/', 'www.abc.co.uk');
                Delete_Cookie(cookieName, '/', '.abc.co.uk');

                // clear server cookies
                Delete_Cookie(cookieName, '/', '');

                // increment counter
                cookie_counter++;

                drawTable();
                //recall the function
                setTimeout("clearAllCookies();",800);
            }else{
                Set_Cookie("selenium_testing","1");
            }
        }
        function drawTable() {
            var allcookies = document.cookie.split(";");
            document.getElementById('heading').innerHTML = allcookies.length + " cookie found";

            var table_html = "<table class='data'>";
            for(var i=0; i < allcookies.length; i++){
                var cookie = allcookies[i].split("=");
                table_html +=  "<tr>";
                table_html +=  "<td>"+(i+1)+"</td>";
                table_html +=  "<td>" + cookie[0] + "</td>";
                table_html +=  "<td>" + cookie[1] + "</td>";
                table_html +=  "<tr>";
            }

            table_html += "</table>";

            document.getElementById('table').innerHTML = table_html;
        }
    </script>

问题是,每次我运行此代码时,都会留下一个 cookie,它会循环通过但不会被删除,并且它始终在数组中排名第一。非常感谢您对解决此问题的任何帮助。

【问题讨论】:

  • BerggreenDK 有一个很好的观点。此外,您甚至没有显示您的 Delete_Cookie 功能...
  • cookie_counter 的值从何而来?这是完整的代码吗?

标签: javascript html cookies


【解决方案1】:

您是否尝试将所有 cookie 时间格式设置为“一毫秒前”?这应该可以清除它。

【讨论】:

  • 这解决了您的问题吗?如果您找到了正确答案,请标记正确答案,以便社区可以增加正确答案。
【解决方案2】:

添加https://github.com/carhartl/jquery-cookie库并执行此脚本

for (var it in $.cookie()) $.removeCookie(it);

【讨论】:

  • 请记住,这个问题已经超过 7 年了,您链接的库不再维护。用新答案回答旧问题时请注意,因为与该特定问题相关的信息可能因年龄原因不相关
【解决方案3】:

数组中的第一个对象总是标记为 0

.split()[0]

【讨论】:

    猜你喜欢
    • 2010-09-15
    • 2017-02-21
    • 2017-08-24
    • 2014-09-25
    • 2016-09-02
    相关资源
    最近更新 更多