以下代码请逐句详细解释以下,谢谢!

以下代码请逐句详细解释以下,谢谢!

function getCookie(cookie_name) {
                var allCookies = document.cookie;
                var cookie_pos = allCookies.indexOf(cookie_name);   //如果找到了索引,就代表cookie存在
                if (cookie_pos != -1) {
                    cookie_pos += cookie_name.length + 1;
                    var cookie_end = allCookies.indexOf(";", cookie_pos);
                    if (cookie_end == -1) {
                        cookie_end = allCookies.length;
                    }
                    return unescape(allCookies.substring(cookie_pos, cookie_end));
                }
                return null;
            }


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好。

1、JavaScript 可以用 document.cookie 获取到当前页面的全部cookie,即allCookies。然后使用传入的参数cookie_name去获取到指定的cookie名的索引cookie_pos。如果找不到,索引值会返回-1。所以如果不是-1那就证明找到了。

http://img1.sycdn.imooc.com//climg/5dc23b2f090e0cf208740098.jpg

2、使用document.cookie获取到的内容形如:cookie1=value;cookie2=value;

所以使用cookie_pos += cookie_name.length + 1;
用先前取得的位置加上cookie名的长度再加1,就是把位置确定在这个cookie名的“=”符号的后面。也就是目标cookie的值的位置。

http://img1.sycdn.imooc.com//climg/5dc23b55094ed68a05690041.jpg


3、allCookies.indexOf(";", cookie_pos)是获取从cookie_pos开始的第一个“;”的位置,如果没有找到。就让cookie_end等于最后一个位置。

http://img1.sycdn.imooc.com//climg/5dc23bda09bf82e507340074.jpg

allCookies.substring(cookie_pos, cookie_end)后经unescape转义就可以得到真正的目标cookie的值。

http://img1.sycdn.imooc.com//climg/5dc23bf60951be6c07940036.jpg


如果解答了同学的疑问,望采纳~

祝学习愉快~


  • 慕沐8221787 提问者 #1
    谢谢!解释很详细
    2019-11-06 12:07:00
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师