分类 Javascript 下的文章

ES6(二)--变量的解构赋值

解构赋值本质上是一种匹配模式,只要两边的模式相同,那么左边的变量就可以被赋予对应的值

数组的解构赋值

ES5中,给多个变量赋值可能是这样

var a = 1, b = 2, c = 3;
//或者这样
var a = 1;
var b = 2;
var c = 3;

- 阅读剩余部分 -

关于事件

DOM0级事件

//事件绑定
target.event = function() {}
//事件删除
target.event = null;

DOM2级事件

//事件绑定
target.addEventListener(event,handler,false);
//删除事件
target.removeEventListener(event,handler,false);

function handler() {console.log("123");}

- 阅读剩余部分 -

jsonp跨域的实现

jsonp跨域原理

1.利用script标签的src属性来跨域
2.用script标签加载资源没有跨域问题

一个跨域的例子
百度的搜索关键字就是通过jsonp跨域获取的

通过请求可以确定百度获取关键字的接口类似于下面这样:
https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=6&json=1&p=3&sid=&req=2&bs=b&csor=1&cb=jQuery110207041980424810492_1512634067560&_=1512634067572

- 阅读剩余部分 -

ajax如何实现、readyState五种状态的含义

ajax实现

var getXmlHttpRequest = function () {
    if (window.XMLHttpRequest) {       
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        //低版本的IE浏览器没有提供XMLHttpRequest对象
        //所以必须使用IE浏览器的特定实现ActiveXObject
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
};
var xhr = getXmlHttpRequest();
xhr.open("TYPE", "URL", true);
xhr.send(""); 
xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {       
        //数据在xhr.responseText
    }
};

readyState的四种状态

- 阅读剩余部分 -

js闭包

闭包就是能够读取其他函数内部变量的函数
来自阮一峰博客

例如

function f1(){
    var n=999;
    function f2(){
      alert(n); 
    }
    return f2;
  }
  var result=f1();
  result(); // 999

- 阅读剩余部分 -

计算滚动条的宽度

在做一个图片放大功能,给html加上overflow:hidden之后发现网页会跳动

原因是hidden之后,滚动条消失,body的宽度就会增加。

看了一下知乎的实现,大概就是先计算出滚动条的宽度,当htmloverflow:hidden的时候,让html本身向右偏移,偏移的像素就是滚动条的宽度。同理,滚动条出现的时候,取消偏移。

滚动条宽度 = 窗口宽度 - 内容宽度

width = window.innerWidth - document.body.scrollWidth