cookie:
干嘛的:存信息,存在了浏览器里
场景:自动登录,记住用户名,购物车....不重要的信息
特性:
域名:必须要有的,一个域名只有一套cookie
大小有限: ~32k 小因为出现的早
1kb=1024字节(英文)
安全性: 被存隐私
session: 会话关闭时
c:/..... 本地
www.localhost.com/.....√
1)设置cookie(种)
document.cookie='name=value; expires=时间'
expires 过期时间
2) 取cookie
document.cookie
3) cookie 种在一级域名根下面
4) 域名:
1级域名 www.xxx.com/.net
2级域名 ooo.xxx.com/.net
www.baidu.com
tieba.baidu.com
document.cookie='xxx=ooo; path=/; domain=localhost; expires=时间'
*** path 必须要+,domain看公司要求
跨域数据交互(jsonp)
谁能跨域:
JSONP/iframe-window.name/h5-POSTMESSAGE
jsonp(跨域)原理:
图片可以跨域
SCRIPT标签也可以跨域
网上的一段js,调用了本地(自个域名)的函数,并传值,本地拿来用
网上的一段js == jsonp接口
抓接口:
wd: 搜索关键字
cb: 回调函数名 可以改
*** script标签是一次性
函数的命名规则:
以英文_开头,中间不要有英文数字之外的内容
字符替换:
strObj.replace('要替换的字符','替换后的字符')
回调函数前面的键(cb),不是唯一的,需要传入
jsonp封装
function jsonp(url,data,success,error,cbKey,timeout){
//创建一个window下面的全局函数
data[cbKey] = ('jsonp'+Math.random()).replace('.','');
window[data[cbKey]] = function (json){
clearTimeout(timer);
success && success(json);
document.getElementsByTagName('head')[0].removeChild();
window[data[cbKey]] = null;
};
//整理data
var arr = [];
for (var key in data){
arr.push(key+'='+encodeURIComponent(data[cbKey]));
}
var str = arr.join('&');
//创建script标签
var oSc = document.createElement('script');
oSc.src = url+'?'+str;
document.getElementsByTagName('head')[0].appdenChild(oSc);
//判断是否超时
if (timeout){
var timer = setTimeout(function(){
error && error();
window[data[cbKey]] = function (){
document.getElementsByTagName('head')[0].removeChild(oSc);
window[data[cbKey]] = null;
};
},timeout);
}
}