js节流操作

函数节流,之前在用一些onscroll,onresize这种容易频繁触发的事件。都没有做节流,可以说缺乏这个意识,突然在群里看到有朋友提问,我自己也想到了。确实要处理,不能狗频繁触发。频繁触发的话,浏览器的负载会越来越大的。比如scroll每滚动一下,浏览器就会处理里面的逻辑。如果我们每隔一段时间在处理逻辑。这样浏览器就不会有这么大的负载了。对不。

两个逻辑。延迟定时器。和时间戳。

resize我们应该每次改变窗口大小之后,在处理逻辑。这样优化,其他的逻辑应该每隔一定的频率就行处理逻辑。

代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
    </head>
    <body style="height:2000px;">
    </body>
    <script>
        var last = 0;
        var timer;
        window.onscroll=function(ev){
            throttle(1000,function(ev){
                alert("1111");
            },ev.type)();
        }
        var throttle = function(delay, action,type){
            return (type=="resize")?function(){
                    clearTimeout(timer);
                    timer=setTimeout(function(){
                        action.apply(this, arguments);
                    },delay)
                }:function(){
                    var curr = +new Date();
                    if (curr - last > delay){
                        action.apply(this, arguments);
                    }
                    last = curr;
            }
         }
    </script>
</html>

演示地址:http://sandbox.runjs.cn/show/3kntsvtf

时间: 2024-10-27 03:18:39

js节流操作的相关文章

使用HTML5的JS选择器操作页面中的元素

上一篇文章介绍了HTML5新增的JavaScript选择器,今晚正式实践一下,使用HTML5的JS选择器操作页面中的元素. 文件命名为:querySelector.html,可在Chrome浏览器中预览效果. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>使用HTML5的JS选择器操作页面中的元

js数组操作

js数组操作大全(转) shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] b:1 unshift:将参数添加到原数组开头,并返回数组的长度 var a = [1,2,3,4,5]; var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7 注:在IE6.0下测试返回值总为undefined,FF2.0下测试

js 行列操作

function insertRow() { var tbl = document.getElementById("tbCarModel"); var rowLen = tbl.childNodes.length; var newTr = tbl.insertRow(rowLen - 1); // var newTr = document.createElement("tr"); // tbl.appendChild(newTr); var td = documen

js数组操作常用方法(转自:http://www.jbxue.com/article/js/20224.html)

js数组操作常用方法,包括数组的创建.数组的元素的访问.数组元素的删除.数组的拷贝等. 原文参考自:http://www.jbxue.com/article/js/20224.html 在jquery中处理JSON数组的情况中遍历用到的比较多,但是用添加移除这些好像不是太多. 今天试过json[i].remove(),json.remove(i)之后都不行,看网页的DOM对象中好像JSON数据是以数组的形式出现的,查阅了下相关JS中数组的操作一试果然很爽.记录下来.1.数组的创建 var arr

js 时间操作 转载

Js获取当前日期时间及其它操作 var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getFullYear();    //获取完整的年份(4位,1970-????)myDate.getMonth();       //获取当前月份(0-11,0代表1月)myDate.getDate();        //获取当前日(1-31)myDate.getDay();         //获取当前星期X(0-6,0代表

js时间操作

js时间操作 var myDate = new Date(); myDate.getYear();       //获取当前年份(2位) myDate.getFullYear();   //获取完整的年份(4位,1970-????) myDate.getMonth();      //获取当前月份(0-11,0代表1月)(要加1) myDate.getDate();       //获取当前日(1-31) myDate.getDay();        // 获取当前星期X(0-6,0代表星期天

js事件操作

常用事件分类: onclick(点击) onmouseover(鼠标放上) onmouseout(鼠标移开) onfocus(获得焦点) onblur(失去焦点) onload(网页加载完) ondblclick(鼠标双击) onkeydown(键盘按下) onkeyup(键盘抬起) onkeypress(按下并抬起) DOM0级事件设置方式: a)         <input  onclick=”alert(this)”>  this指引当前input框 b)        <inp

js 数组操作大集合

js数组的操作 用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一下狠心,我学!呵呵.学了之后才知道,js数组的功能强大很,远比VB,C#强多了,大家慢慢看吧 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度

js数组操作【转载】

用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一下狠心,我学!呵呵.学了之后才知道,js数组的功能强大很,远比VB,C#强多了,大家慢慢看吧 1.数组的创建 var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var array