summery



==============================
http://www.cnblogs.com/(博客园)很不错
http://www.html5tricks.com/ (html5教程)很不错
===================================
在线代码解压工具(把压缩过的代码还原)
http://tool.lu/js/ 


==================================================================================
浏览器渲染原理
还是P话说一句:周六,没地方去,看了会火影,然后接着看点东西,记录之!


Web页面运行在各种各样的浏览器当中,浏览器载入、渲染页面的速度直接影响着用户体验简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程。先来大致了解一下浏览器都是怎么干活的:
  1. 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件;
  2. 浏览器开始载入html代码,发现<head>标签内有一个<link>标签引用外部CSS文件;
  3. 浏览器又发出CSS文件的请求,服务器返回这个CSS文件;
  4. 浏览器继续载入html中<body>部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了;
  5. 浏览器在代码中发现一个<img>标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面的代码;
  6. 服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码;
  7. 浏览器发现了一个包含一行Javascript代码的<script>标签,赶快运行它;
  8. Javascript脚本执行了这条语句,它命令浏览器隐藏掉代码中的某个<div> (style.display=”none”)。杯具啊,突然就少了这么一个元素,浏览器不得不重新渲染这部分代码;
  9. 终于等到了</html>的到来,浏览器泪流满面……
  10. 等等,还没完,用户点了一下界面中的“换肤”按钮,Javascript让浏览器换了一下<link>标签的CSS路径;
  11. 浏览器召集了在座的各位<div><span><ul><li>们,“大伙儿收拾收拾行李,咱得重新来过……”,浏览器向服务器请
  求了新的CSS文件,重新渲染页面。


^^^^^^^^^^^^^^^^^ 看,那忧伤的分割线 ^^^^^^^^^^^^^^^^^


  浏览器每天就这么来来回回跑着,要知道不同的人写出来的html和css代码质量参差不齐,说不定哪天跑着跑着就挂掉了。
好在这个世界还有这么一群人——页面重构工程师,平时挺不起眼,也就帮视觉设计师们切切图啊改改字,
其实背地里还是干了不少实事的。


说到页面为什么会慢?那是因为浏览器要花时间、花精力去渲染,
尤其是当它发现某个部分发生了点变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫reflow。


浏览器渲染原理


   reflow几乎是无法避免的。现在界面上流行的一些效果,
比如树状目录的折叠、展开(实质上是元素的显 示与隐藏)等,都将引起浏览器的 reflow。
鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,
都会引起它内部、周围甚至整个页面的重新渲 染。通常我们都无法预估浏览器到底会reflow哪一部分的代码,
它们都彼此相互影响着。


浏览器渲染原理


   reflow问题是可以优化的,我们可以尽量减少不必要的reflow。
比如开头的例子中的<img>图片载入问题,这其实就是一个可以避免的reflow——给图片设置宽度和高度就可以了。
这样浏览器就知道了图片的占位面积,在载入图片前就预留好了位置。


另外,有个和reflow看上去差不多的术语:repaint,中文叫重绘。如果只是改变某个元素的背景色、
文 字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器repaint。
repaint的速度明显快于 reflow(在IE下需要换一下说法,reflow要比repaint 更缓慢)。
下次将通过一系列的实验说明在Firefox、IE等浏览器下reflow的优化


===================================================================================
Javascript刷新页面的几种方法:


1 history.go(0)


2 location.reload()


3 location=location


4 location.assign(location)


5 location.replace(location)


6 location.href. = document.URL


____________________________________________


框架页中:(框架页中其中一个子页)


top.location.reload();   刷新整页  
self.location.reload();  刷新本页


window.parent.location.href='' 框架页重定向


_____________________________________________


自动刷新页面的方法:1.页面自动刷新:
把如下代码加入<head>区域中<meta http-equiv="refresh" content="20">其中20指每隔20秒刷新一次页面.
<body οnlοad="opener.location.reload()"> 开窗时刷新<body onUnload="opener.location.reload()"> 关闭时刷新。


=================================================================================


JS作用域的问题:
<script type="text/javascript">
var msg='hello';
function great(name,attr){
         name='david';
         var greating=msg+name+'!';
         var msg='你好';
         for(var i=0;i<10;i++){
         var next=msg+'你的id是'+i*2+i ;
         }
         alert(arguments[0]);
         alert(arguments[1]);
         alert(greating);
         alert(next);
}
great('Tom')
</script>
复制代码
看见这道题目,我就顿时放松了不少,因为这样类似题目平时做了太多太多了,无非就是JS的预编译,还有作用域的问题,呵呵
当时让我思考3min,然后告诉他结果,接着说下理由,呵呵 我瞄了一眼,然后告诉他们我的解释.这里解释一下,不懂的可以参考下,
函数great有2个实参,一个是name,一个是atr,顶级作用域windwo下有个变量msg,而函数great内部也有变量msg,函数great运行的时候传入的参数是tom,
而且是一个参数,即是实参name的传参,alert(arguments[0]);arguments即是函数实参的类数组,所以arguments[0]自然是name,而因为函数有个参数name,
又因为函数定义的时候就相当于在自己的作用域内创建了一个name变量,
所以在没有运行到name='david'的时候name是tom,但是当运行到这段代码的时候name变量已经替换到了david,
所以alert(arguments[0])即是david。alert(arguments[1]);因为没有第二个参数所有是undefined。alert(greating),关于这个的结果,
就要考虑到了预编译及其变量查找,因为函数内部已经有了msg又因为变量查找的时候先在自己的作用域内部查找如果没有找到再从外面作用域一层一层向外查找
,这里函数内部已经有定义变量var msg='你好',
所以已经在自己的作用域下找到msg,又因为变量运行的时候要对var定义的变量进行预编译并且把变量赋值成undefined,
所以函数运行的时候msg只是undefined,当运行到了var msg='你好';之后msg才是你好,而name是david所以结果是undefineddavid!,字符串连接,
接着alert(next);因为,这里是个循环,每次都进行了一个创建和摧毁的机制,循环完成的时候i应该是等于9,即var next=msg+'的你的id是'+i*2+i ;
等于var next=你好+'你的id是'+i*9+9 ;这里也是字符串连接,所以是你好你的id是189。


=====================================================================


//ajax封装
//$.get()\$.post()


(function  () {
//用于得到一个dom对象
var $=function  (id) {
return document.getElementById(id);
}
    //用于得到一个ajax对象
    $.init=function (){
    try{return new XMLHttpRequest()}catch(e){}
    try{return new ActiveXobject('Microsoft.XMLHTTP')}catch(e){}
    alert('error');
    }
    //用于发送ajax的get请求
    $.get=function(url,data,callback,type){
    var xhr=$.init();
    if(data!=null){
    url=url+'?'+data;//有时候ajax只想传递一个过程,不需要传递参数时
    }
    xhr.open('get',url);
    xhr.setRequestHeader("If-Modified-Since","0");
    xhr.onreadystatechange=function(){
            if (xhr.readyState==4 && xhr.status==200) {
                 if (type==null) {
                    type='text';    //如果没有传递type参数,让type的值默认为text
                };
               if (type=='text') {
                 callback(xhr.responseText);    //返回字符串类型
               };
               if (type=='xml') {
                  callback(xhr.responseXML);    //返回XML类型
               };
               if (type=='json'){
                  var str=eval('('+xhr.responseText+')');   //转成对象
                  callback(str);    //返回json类型
               }
            } 
    }
    xhr.send(null);
    }
===========================================================================
    //用于发送ajax的post请求
    $.post=function (url,data,callback,type){
        var xhr=$.init();;    //调用Ajax对象
        xhr.open('post',url);     //初始化,用post请求方式连接到php文件,这样不会产生缓存问题
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode');  //设置请求头信息,本次提交的数据是字符数据
        xhr.onreadystatechange=function(){    //设置Ajax对象的状态码发生改变时所触发的回调函数
            if (xhr.readyState==4 && xhr.status==200) {
                if (type==null) {
                    type='text';    //如果没有传递type参数,让type的值默认为text
                };
               if (type=='text') {
                 callback(xhr.responseText);    //返回字符串类型
               };
               if (type=='xml') {
                  callback(xhr.responseXML);    //返回XML类型
               };
               if (type=='json'){
                  var str=eval('('+xhr.responseText+')');   //转成对象
                  callback(str);    //返回json类型
               }
            };
        }
        xhr.send(data);    //发送请求,由于初始化时使用post请求方式,所以需添加post请求时所传递的函数(如果是get请求,则为空null)
    }
window.$=$;
})();


=======================================================================================
紫川软件:




//页面刷新或退出


window.onbeforeunload = function(e) {
    e = e || window.event;
    var msg = "您确定要离开此页面吗?";
      
    // IE
    e.cancelBubble = true;
    e.returnValue = msg;
      
    // Firefox
    if(e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
    }
     
    // Chrome / Safari
    return msg;
};

==============================华丽的分隔线=====================================================

/**
*获取cookie值 

*/

function getCookie(name){var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg))return unescape(arr[2]);elsereturn null;}


//JS操作cookies方法!//写cookies

function setCookie(name,value){var Days = 30;var exp = new Date();exp.setTime(exp.getTime() + Days*24*60*60*1000);document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();}


/**
 *  清除所有cookies缓存数据,当然可以不用代码清除
 */
var delAllCookies = function () {
var strCookie=document.cookie, 
arrCookie=strCookie.split("; "),// 将多cookie切割为多个名/值对
//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
delCookie = function (name){
  var date = new Date();
  date.setTime(date.getTime() - 10000);
  document.cookie = name + "=null; expires=" + date.toGMTString();
}; 
    for(var i=0;i<arrCookie.length;i++){ // 遍历cookie数组,处理每个cookie对
    var arr=arrCookie[i].split("=");
    if(arr.length>0)
    delCookie(arr[0]);
}
};




华邦云:
=======================================


getComputedStyle(this, null)["left"]获取css




============================================================
除了ie,别的浏览器不支持innerText,


innerHTML.replace(/<.+?>/gim,'')这样去获取文本






过滤html标签
str.replace(/<[^>]+>/g,"")


=========================
CSS3 定义盒子内容水平、垂直居中布局
div
{
width:350px;
height:100px;
border:1px solid black;
  
/* Firefox */
display:-moz-box;
-moz-box-pack:center;
-moz-box-align:center;


/* Safari, Chrome, and Opera */
display:-webkit-box;
-webkit-box-pack:center;
-webkit-box-align:center;


/* W3C */
display:box;
box-pack:center;
box-align:center;
}


===================================
一键加群:http://qun.qq.com/join.html


=============================================


UI组件:
http://www.kendoui.com 【Kendo UI】
http://amazeui.org/ 【移动端】
http://www.getuikit.net/ 【uikit】


===============================================================================================


火狐和webkit内核浏览器可以直接通过css来控制,分别为:-moz-placeholder和::-webkit-input-placeholder
使用placeholder.js解决IE9以下不兼容placeholder问题
:-moz-placeholder,
::-webkit-input-placeholder{  
        color: #bfbfbf;
}


=========================


call和apply


只有对象成员 或 类才有这个函数使用权




=================================================================================
var sum=function(n){
    if(1==n) {
       return 1;
    } else {
       return n + arguments.callee(n-1);
     }
  }
  alert(sum(100));
arguments.callee 相当于sum
递归是堆栈操作 内存不会释放的。。
for是函数操作,完成后内存即时释放。。
假设现在一个func里  有多个复杂逻辑  递归一直执行  
特别是服务器端 多node节点的情况下  容易内存溢出的




=================================================================================
josn中key值变量的写法:
var a = 'name';var b = '李四';
方法一:


var str = '{'+ a +':"'+ b +'"}'
var obj = eval("("+ str +")")


方法二:
var obj = JSON.parse('{"' + a + '":"' + b + '"}');


方法三:
var obj = eval('({"' + a + '":"' + b + '"})');


=================================================================================
/*强制不换行*/
white-space:nowrap;
/*自动换行*/
word-wrap: break-word;
word-break: normal;
/*强制英文单词断行*/
word-break:break-all;
===============================================================================


//闪烁标题
blinkTitle : {
show : function() { //有新消息时在title处闪烁提示
var step=0, _title = document.title;
var timer = setInterval(function() {
step++;
if (step==3) {
step=1
};
if (step==1) {
document.title='【   】'+_title;
};
if (step==2) {
document.title='【新消息】'+_title;
};
}, 600);
return [timer, _title];
},
// @param timerArr[0], timer标记
// @param timerArr[1], 初始的title文本内容
clear : function(timerArr) { //去除闪烁提示,恢复初始title文本
if(timerArr) {
clearInterval(timerArr[0]);
document.title = timerArr[1];
};
}
}

var ary = blinkTitle.show()
blinkTitle.clear(ary);

===================================================================
<select class="edit-select" style="width: 110px;" οnmοusedοwn="this.sindex = this.selectedIndex; this.selectedIndex = -1;">


解决不能重复触发option事件问题


==================================================
//这种方式添加/删除className
 h[r ? "addClass" : "removeClass"]("fullHeartShow");
=========================================================================
另类获取样式属性的值:


$.css($container[0], "height", true) 
$.css($container[0], "paddingTop", true)
$.css($container[0], "paddingBottom", true)
$.css(document.body, 'background', false) 结果:"rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box"


============================================================================
另外jquery创建dom元素,及绑定事件
sbHolder = $("<div>", 
       {
"text":"需要需要需要需要厅需要",


       "id": "sbHolder_",
       "class": 'fdsfds',


"css":{height: 30,'z-index':10000},


       "tabindex": 2,
"
click":function(e){


alert(6)

}


       }
);


=====================================================================================================
颜色值的随机生成
randomInt: function (len) {
            return Math.floor( Math.random() * len);
        },
randomRGB: function _randomRGB() {
            var aHex = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F'], i, rgb = '#';
            for (i = 0; i < 6; i++) {
                rgb += aHex[this.randomInt(aHex.length)];
            }
            return rgb;
        }
========================================================================================================
拿到参数长度、值
function fn(a,b,c){


alert(arguments.length);


alert([].slice.call(arguments))




}
===========================================================================
生成随机的字母数字字符串
function generateRandomAlphaNum(len) {
    var rdmString = "";
    for( ; rdmString.length < len; rdmString  += Math.random().toString(36).substr(2));
    return  rdmString.substr(0, len);
}
=============================
























































http://www.cnblogs.com/(博客园)很不错
http://www.html5tricks.com/ (html5教程)很不错
===================================
在线代码解压工具(把压缩过的代码还原)
http://tool.lu/js/ 


==================================================================================
浏览器渲染原理
还是P话说一句:周六,没地方去,看了会火影,然后接着看点东西,记录之!


Web页面运行在各种各样的浏览器当中,浏览器载入、渲染页面的速度直接影响着用户体验简单地说,页面渲染就是浏览器将html代码根据CSS定义的规则显示在浏览器窗口中的这个过程。先来大致了解一下浏览器都是怎么干活的:
  1. 用户输入网址(假设是个html页面,并且是第一次访问),浏览器向服务器发出请求,服务器返回html文件;
  2. 浏览器开始载入html代码,发现<head>标签内有一个<link>标签引用外部CSS文件;
  3. 浏览器又发出CSS文件的请求,服务器返回这个CSS文件;
  4. 浏览器继续载入html中<body>部分的代码,并且CSS文件已经拿到手了,可以开始渲染页面了;
  5. 浏览器在代码中发现一个<img>标签引用了一张图片,向服务器发出请求。此时浏览器不会等到图片下载完,而是继续渲染后面的代码;
  6. 服务器返回图片文件,由于图片占用了一定面积,影响了后面段落的排布,因此浏览器需要回过头来重新渲染这部分代码;
  7. 浏览器发现了一个包含一行Javascript代码的<script>标签,赶快运行它;
  8. Javascript脚本执行了这条语句,它命令浏览器隐藏掉代码中的某个<div> (style.display=”none”)。杯具啊,突然就少了这么一个元素,浏览器不得不重新渲染这部分代码;
  9. 终于等到了</html>的到来,浏览器泪流满面……
  10. 等等,还没完,用户点了一下界面中的“换肤”按钮,Javascript让浏览器换了一下<link>标签的CSS路径;
  11. 浏览器召集了在座的各位<div><span><ul><li>们,“大伙儿收拾收拾行李,咱得重新来过……”,浏览器向服务器请
  求了新的CSS文件,重新渲染页面。


^^^^^^^^^^^^^^^^^ 看,那忧伤的分割线 ^^^^^^^^^^^^^^^^^


  浏览器每天就这么来来回回跑着,要知道不同的人写出来的html和css代码质量参差不齐,说不定哪天跑着跑着就挂掉了。
好在这个世界还有这么一群人——页面重构工程师,平时挺不起眼,也就帮视觉设计师们切切图啊改改字,
其实背地里还是干了不少实事的。


说到页面为什么会慢?那是因为浏览器要花时间、花精力去渲染,
尤其是当它发现某个部分发生了点变化影响了布局,需要倒回去重新渲染,内行称这个回退的过程叫reflow。


浏览器渲染原理


   reflow几乎是无法避免的。现在界面上流行的一些效果,
比如树状目录的折叠、展开(实质上是元素的显 示与隐藏)等,都将引起浏览器的 reflow。
鼠标滑过、点击……只要这些行为引起了页面上某些元素的占位面积、定位方式、边距等属性的变化,
都会引起它内部、周围甚至整个页面的重新渲 染。通常我们都无法预估浏览器到底会reflow哪一部分的代码,
它们都彼此相互影响着。


浏览器渲染原理


   reflow问题是可以优化的,我们可以尽量减少不必要的reflow。
比如开头的例子中的<img>图片载入问题,这其实就是一个可以避免的reflow——给图片设置宽度和高度就可以了。
这样浏览器就知道了图片的占位面积,在载入图片前就预留好了位置。


另外,有个和reflow看上去差不多的术语:repaint,中文叫重绘。如果只是改变某个元素的背景色、
文 字颜色、边框颜色等等不影响它周围或内部布局的属性,将只会引起浏览器repaint。
repaint的速度明显快于 reflow(在IE下需要换一下说法,reflow要比repaint 更缓慢)。
下次将通过一系列的实验说明在Firefox、IE等浏览器下reflow的优化


===================================================================================
Javascript刷新页面的几种方法:


1 history.go(0)


2 location.reload()


3 location=location


4 location.assign(location)


5 location.replace(location)


6 location.href. = document.URL


____________________________________________


框架页中:(框架页中其中一个子页)


top.location.reload();   刷新整页  
self.location.reload();  刷新本页


window.parent.location.href='' 框架页重定向


_____________________________________________


自动刷新页面的方法:1.页面自动刷新:
把如下代码加入<head>区域中<meta http-equiv="refresh" content="20">其中20指每隔20秒刷新一次页面.
<body οnlοad="opener.location.reload()"> 开窗时刷新<body onUnload="opener.location.reload()"> 关闭时刷新。


=================================================================================


JS作用域的问题:
<script type="text/javascript">
var msg='hello';
function great(name,attr){
         name='david';
         var greating=msg+name+'!';
         var msg='你好';
         for(var i=0;i<10;i++){
         var next=msg+'你的id是'+i*2+i ;
         }
         alert(arguments[0]);
         alert(arguments[1]);
         alert(greating);
         alert(next);
}
great('Tom')
</script>
复制代码
看见这道题目,我就顿时放松了不少,因为这样类似题目平时做了太多太多了,无非就是JS的预编译,还有作用域的问题,呵呵
当时让我思考3min,然后告诉他结果,接着说下理由,呵呵 我瞄了一眼,然后告诉他们我的解释.这里解释一下,不懂的可以参考下,
函数great有2个实参,一个是name,一个是atr,顶级作用域windwo下有个变量msg,而函数great内部也有变量msg,函数great运行的时候传入的参数是tom,
而且是一个参数,即是实参name的传参,alert(arguments[0]);arguments即是函数实参的类数组,所以arguments[0]自然是name,而因为函数有个参数name,
又因为函数定义的时候就相当于在自己的作用域内创建了一个name变量,
所以在没有运行到name='david'的时候name是tom,但是当运行到这段代码的时候name变量已经替换到了david,
所以alert(arguments[0])即是david。alert(arguments[1]);因为没有第二个参数所有是undefined。alert(greating),关于这个的结果,
就要考虑到了预编译及其变量查找,因为函数内部已经有了msg又因为变量查找的时候先在自己的作用域内部查找如果没有找到再从外面作用域一层一层向外查找
,这里函数内部已经有定义变量var msg='你好',
所以已经在自己的作用域下找到msg,又因为变量运行的时候要对var定义的变量进行预编译并且把变量赋值成undefined,
所以函数运行的时候msg只是undefined,当运行到了var msg='你好';之后msg才是你好,而name是david所以结果是undefineddavid!,字符串连接,
接着alert(next);因为,这里是个循环,每次都进行了一个创建和摧毁的机制,循环完成的时候i应该是等于9,即var next=msg+'的你的id是'+i*2+i ;
等于var next=你好+'你的id是'+i*9+9 ;这里也是字符串连接,所以是你好你的id是189。


=====================================================================


//$.get()\$.post()封装


(function  () {
//用于得到一个dom对象
var $=function  (id) {
return document.getElementById(id);
}
    //用于得到一个ajax对象
    $.init=function (){
    try{return new XMLHttpRequest()}catch(e){}
    try{return new ActiveXobject('Microsoft.XMLHTTP')}catch(e){}
    alert('error');
    }
    //用于发送ajax的get请求
    $.get=function(url,data,callback,type){
    var xhr=$.init();
    if(data!=null){
    url=url+'?'+data;//有时候ajax只想传递一个过程,不需要传递参数时
    }
    xhr.open('get',url);
    xhr.setRequestHeader("If-Modified-Since","0");
    xhr.onreadystatechange=function(){
            if (xhr.readyState==4 && xhr.status==200) {
                 if (type==null) {
                    type='text';    //如果没有传递type参数,让type的值默认为text
                };
               if (type=='text') {
                 callback(xhr.responseText);    //返回字符串类型
               };
               if (type=='xml') {
                  callback(xhr.responseXML);    //返回XML类型
               };
               if (type=='json'){
                  var str=eval('('+xhr.responseText+')');   //转成对象
                  callback(str);    //返回json类型
               }
            } 
    }
    xhr.send(null);
    }
===========================================================================
    //用于发送ajax的post请求
    $.post=function (url,data,callback,type){
        var xhr=$.init();;    //调用Ajax对象
        xhr.open('post',url);     //初始化,用post请求方式连接到php文件,这样不会产生缓存问题
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode');  //设置请求头信息,本次提交的数据是字符数据
        xhr.onreadystatechange=function(){    //设置Ajax对象的状态码发生改变时所触发的回调函数
            if (xhr.readyState==4 && xhr.status==200) {
                if (type==null) {
                    type='text';    //如果没有传递type参数,让type的值默认为text
                };
               if (type=='text') {
                 callback(xhr.responseText);    //返回字符串类型
               };
               if (type=='xml') {
                  callback(xhr.responseXML);    //返回XML类型
               };
               if (type=='json'){
                  var str=eval('('+xhr.responseText+')');   //转成对象
                  callback(str);    //返回json类型
               }
            };
        }
        xhr.send(data);    //发送请求,由于初始化时使用post请求方式,所以需添加post请求时所传递的函数(如果是get请求,刚为空null)
    }
window.$=$;
})();


=======================================================================================
//页面刷新或退出调用方法


window.onbeforeunload = function(e) {
    e = e || window.event;
    var msg = "您确定要离开此页面吗?";
      
    // IE
    e.cancelBubble = true;
    e.returnValue = msg;
      
    // Firefox
    if(e.stopPropagation) {
        e.stopPropagation();
        e.preventDefault();
    }
     
    // Chrome / Safari
    return msg;
};
===================================================================================
/**
 *  清除所有cookies缓存数据,当然可以不用代码清除
 */
var delAllCookies = function () {
var strCookie=document.cookie, 
arrCookie=strCookie.split("; "),// 将多cookie切割为多个名/值对
//为了删除指定名称的cookie,可以将其过期时间设定为一个过去的时间
delCookie = function (name){
  var date = new Date();
  date.setTime(date.getTime() - 10000);
  document.cookie = name + "=null; expires=" + date.toGMTString();
}; 
    for(var i=0;i<arrCookie.length;i++){ // 遍历cookie数组,处理每个cookie对
    var arr=arrCookie[i].split("=");
    if(arr.length>0)
    delCookie(arr[0]);
}
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值