js事件
题目
- 编写一个通用的事件监听函数
- 描述事件冒泡的流程
- 对于一个无限下拉加载图片的页面,如何给每个图片绑定事件
知识点
1 通用事件绑定
btn.addEventListener('click', function (event){
e.preventDefault();
console.log('clicked');
});
- IE低版本兼容,attachEvent绑定事件
2 事件冒泡
e.stopPropatation();// 阻止冒泡
3 代理
解答
1 编写一个通用的事件监听函数
2 描述事件冒泡的流程
- 沿着dom树往上找
3 对于一个无限下拉加载图片的页面,如何给每个图片绑定事件
Ajax
题目
- 手动编写ajax,不依赖第三方库
- 跨域的几种实现方式
知识点
1 XMLHttpREquest
var xhr = new XMLHttpRequest();
xhr.open('GET', '/api', false);
xhr.onreadystatechange = function() {
if(xhr.readyState == 4){
if(xhr.status == 200){
alert(xhr.responseText);
}
}
}
xhr.send(null);
- IE低版本使用ActiveXObject
2 状态码说明
- 0 - (未初始化) 还没有调用send() 方法
- 1 - (载入) 已调用send方法,正在发送
- 2 - (载入完成) send方法执行完成
- 3 - (交互) 正在解析响应内容
- 4 - (完成) 响应内容解析完成,可在客户端调用
- 2xx - 表示请求成功。如200
- 3xx - 需要重定向,浏览器直接跳转
- 4xx - 客户端请求错误,如404
- 5xx - 服务器端错误
3 跨域
什么是跨域
- 浏览器的同源策略,不允许ajax访问其他域接口
- 跨域条件:协议,域名,端口,有一个不同就算跨域
- 三个标签可以使用跨域
用于打点统计,统计网站可能是其他域
JSONP
实现原理
1 加载http://baozi.com/index.html
2 不一定服务器端真正有一个index.html文件
3 服务器可以根据请求,动态生成一个文件返回
4 同理于