关键词:
今天review新人写的javascript代码的时候发现了很多的问题。这里以function getCookie(name){}为例。
其中比较典型的一个问题就是如何通过javascript获取cookie里面的一个值。 那么我们先来看看cookie到底长什么样子呢?
直接在浏览器地址栏输入: javascript:alert(document.cookie); 回车。(这行代码的意思是,让浏览器执行javascript语句: alert(document.cookie);)
结果是:uin=webryan; sessionid=10293123834; pgv_send=1; cur_page=index
这个样子。
注意:1.开始没有空格,2.分号后又空格 3.最后没有分号。那么我们获取cookie的方法就比较明确了。。
一种是用document.cookie.split(“; “)的方式把字符串分割成几个段,然后遍历整个数组。 把每个数组单元等号左边的和name对比是否相等,相等则取等号右边的值。
- function getCookie(name){
- var arr = document.cookie.split("; ");
- for(var i=0,len=arr.length;i<len;i++){
- var item = arr[i].split("=");
- if(item[0]==name){
- return item[1];
- }
- }
- return "";
- }
- function getCookie(name){
- var arr = document.cookie.split("; ");
- for(var i=0,len=arr.length;i<len;i++){
- var item = arr[i].split("=");
- if(item[0]==name){
- return item[1];
- }
- }
- return "";
- }
第二种就是直接在字符串中搜索关键字。由于分号有空格,加上防止出现搜索cookie name为“str”的value是,有一个test_str的cookie名称。这里我们先进行一次过滤。 然后在找到 ;str的位置,这样就不会出问题。具体情况如下
- function getCookie(name){
- var value="";
- var cookie = ";"+document.cookie.replace(/;s+/g,";")+";"
- var pos = cookie.indexOf(";"+name+"=");
- if(pos>-1){
- var start = cookie.indexOf("=",pos);
- var end = cookie.indexOf(";",start);
- value = unescape(cookie.substring(start+1,end));
- }
- return value;
- }
- function getCookie(name){
- var value="";
- var cookie = ";"+document.cookie.replace(/;s+/g,";")+";"
- var pos = cookie.indexOf(";"+name+"=");
- if(pos>-1){
- var start = cookie.indexOf("=",pos);
- var end = cookie.indexOf(";",start);
- value = unescape(cookie.substring(start+1,end));
- }
- return value;
- }
不同方法在不同时刻有不同的选择。 这个就是晓晓说的选型问题。
现在实际使用的代码是
- /**
- * cookie相关
- */
- $.cookie = {
- /**
- * 读取cookie
- *
- * @param {String} n=名称
- * @return {String} cookie值
- * @example
- * $.cookie.get(‘id_test‘);
- */
- get:function(n){
- var m = document.cookie.match(new RegExp( "(^| )"+n+"=([^;]*)(;|$)"));
- return !m ? "":unescape(m[2]);
- },
- /**
- * 设置cookie
- * @param {String} name cookie名称 --必填
- * @param {String} value cookie值 --必填
- * @param {String} domain 所在域名
- * @param {String} path 所在路径
- * @param {Number} hour 存活时间,单位:小时
- * @example
- * $.cookie.set(‘value1‘,‘cookieval‘,"id.qq.com","/test",24); //设置cookie
- */
- set:function(name,value,domain,path,hour){
- var expire = new Date();
- expire.setTime(expire.getTime() + (hour?3600000 * hour:30*24*60*60*1000));
- document.cookie = name + "=" + value + "; " + "expires=" + expire.toGMTString()+"; path="+ (path ? path :"/")+ "; " + (domain ? ("domain=" + domain + ";") : "");
- },
- /**
- * 删除指定cookie,复写为过期 !!注意path要严格匹配, /id 不同于/id/
- *
- * @param {String} name cookie名称
- * @param {String} domain 所在域
- * @param {String} path 所在路径
- * @example
- * $.cookie.del(‘id_test‘); //删除cookie
- */
- del : function(name, domain, path) {
- document.cookie = name + "=; expires=Mon, 26 Jul 1997 05:00:00 GMT; path="+ (path ? path :"/")+ "; " + (domain ? ("domain=" + domain + ";") : "");
- },
- /**
- * 删除所有cookie -- 这里暂时不包括目录下的cookie
- * @example
- * $.cookie.clear(); //删除所有cookie
- */
- clear:function(){
- var rs = document.cookie.match(new RegExp("([^ ;][^;]*)(?=(=[^;]*)(;|$))", "gi"));
- // 删除所有cookie
- for (var i in rs){
- document.cookie = rs[i] + "=;expires=Mon, 26 Jul 1997 05:00:00 GMT; path=/; " ;
- }
- },
- /**
- * uin -- 针对业务,对外开源请删除
- *
- * @return {String} uin值
- * @example
- * $.cookie.uin();
- */
- uin:function(){
- var u = $.cookie.get("uin");
- return !u?null:parseInt(u.substring(1, u.length),10);
- }
- };
c#中request.cookies和response.cookies的区别分析
...么它创建的Cookie与Response和JS创建的Cookie有什么不用呢,通过实验发现,通过Request.Cookies创建的Cookie只有?Request.Cookies才能获取到,而其他两种方法是不能获取的,也就是说Request.Cookies创建的Cookie只能用于.Net后台不能用于HTML的前... 查看详情
利用requests库获取cookies的方式(代码片段)
...种情况可能会认为:这个得找cookies变化的规律,通过请求与响应可以改变cookies,通过js也可以改变cookies。要系统分析。其实不必这么复杂,方法很简单:defget 查看详情
cookie分析
浏览器cookie分析简单点说就是数据存储,通过JavaScript将要保存的数据保存在客户端浏览器,下次打开网页时调用保存的cookie。浏览器中cookie保存的形式:user=aa;pwd=123;sex=man;还要注意的是cookie的过期时间expires。好了!简单分析到... 查看详情
javascript怎么获取cookie
...eturn"";参考技术A浏览器cookie分析简单点说就是数据存储,通过JavaScript将要保存的数据保存在客户端浏览器,下次打开网页时调用保存的cookie。浏览器中cookie保存的形式:user=aa;pwd=123;sex=man;还要注意的是cookie的过期时间expires。好... 查看详情
handlerthread使用及源码分析
...ad线程b、运行线程c、获取HandlerThread线程中的Looper实例d、通过Looper实例创建Handler实例,从而使mSubThreadHandler与该线程连接到一起 myHandlerThread=newHandlerThread(" 查看详情
js获取页面responseheaders中各domain下的cookie个数、及总的cookie大小跪求啊
js获取页面responseheaders中按域名分类的cookie信息,传送到后端(eg:servlet)统计每个domain下cookie的大小及个数要解决的就是这问题参考技术A刚收到你求助,说1点:客户端js是无法获取全部cookie的。因为HTTP协议中服务端可以指定有... 查看详情
wrapper配置详解及高级应用(转)
...程序一般较庞大,运行环境也较复杂。 通过Wrapper配置文件的分析与配置进一步了解构建Wrapper服务需要注意的关键点及重要部分。 查看详情
js判断登陆用户名及密码是否为空的简单实例
js判断登陆用户名及密码是否为空的简单实例?12345678910111213141516<scripttype="text/javascript">//验证输入不为空的脚本代码functioncheckForm(form){if(form.username.value==""){alert("用户名不能为空!");form.username.focus();returnfalse;} 查看详情
pca算法介绍及简单实例
...一个问题,那么这些冗余的特征是没有价值的。我们可以通过降低维度(用机器学习的话来说就是去掉一些特征)来提高算法效率。在解决机器学习问题时,如果能把数据可视化,可以大大帮助我们找到解决方案。但是,如果特... 查看详情
[转]jvm系列四:生产环境参数实例及分析生产环境实例增加中
原文地址:http://www.cnblogs.com/redcreen/archive/2011/05/05/2038331.htmljavaapplication项目(非web项目)改进前:-Xms128m-Xmx128m-XX:NewSize=64m-XX:PermSize=64m-XX:+UseConcMarkSweepGC-XX:CMSInitiatingOccupancyFractio 查看详情
转--js(jquery)获取时间的方法及常用时间类
来自:http://blog.csdn.NET/liujun198773/article/details/7554628 感谢$(function(){varmydate=newDate();vart=mydate.toLocaleString();/*alert(t);*/$("#time").text(t);$("#time").load("Untitled-1.html");}); 查看详情
js(jquery)获取时间的方法及常用时间类(转)
转自:http://blog.csdn.net/weiming8517/article/details/25604551感谢作者分享$(function(){varmydate=newDate();vart=mydate.toLocaleString();/*alert(t);*/$("#time").text(t);$("#time").load("Untitled-1.html");});&l 查看详情
js操作cookie简单封装
...多解释了,直接上代码吧,包括:设置cookie、删除cookie、获取cookie随便带个说明:*HTTPCookie:存储会话信息*名称和值传送时必须是经过RUL编码的*cookie绑定在指定的域名下,非本域无法共享cookie,但是可以是在主站共享cookie给子站*... 查看详情
登录、注册及cookie
...录成功并跳转到主页,同时将用户名存为cookie2.加载主页获取cookie 2.1cookie不存在,跳转到登录页 2.2cookie存在,显示用户名 2.3点击注销,删除cookie并跳转到登录页3.管理员登录 3.1输入管理员... 查看详情
cookie的设置获取和删除
cookie是运行在客户端的,可以用JS来设置cookie.首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。JS设置cookie:假设在A页面中要保存变量username的值("... 查看详情
c#如何用winform获取某个网站的cookies
...点,万分感谢……简单的说呢,就是从获取的response中,通过response.Cookies,获得已解析得到的cookie再细点说呢,其实通过response的Headers,也可以获得原始的Set-Cookie的字符串,自己解析,也可以获得和上面的response.Cookies一样的cook... 查看详情
自然语言处理课程:jieba分词的原理及实例操作
...可操作的技术方法。作为小说爱好者的你,是否有设想过通过一些计算机工具对小说做一些有趣的事情呢?阅读本文,你可以了解到如何运用现在最流行、最容易运用的jieba分词包,统计一个段落的词频,然后来通过词频推断小... 查看详情
web前端课程技术总结node.js使用方法及相关方法分析
...就是一个js的运行环境,所以他开发用的语言是js语言,通过node去编译你的js文件node.js的安装1)npmi- 查看详情