1.跨域
产生跨域的原因
浏览器出于安全考虑,有同源策略,也就是说:协议,域名和端口有一个不同,都被当做不同的域,就会产生跨域问题。
解决跨域的方法
1.通过设置相同的document.domain
如果两个网页一级域名相同,只是二级域名不同,那么可以通过设置相同的document.domin属性来共享cookie
document.domin="example.com";
document.cookie="test1=hello"//a网页设置cookie
var allcookie=document.cookie;//b网页可以直接读取到cookie
2.通过设置window.name属性来实现跨域传递数据
//浏览器窗口可以设置window.name属性,只要是在该浏览器窗口下的网页,都可以读取到该属性
//打开网页a,设置window.name属性
window.name='xxx';
//打开网页b,读取window.name属性
var data=document.getElenmentById('myframe').contentWindow.name;
3.通过使用postMessage()方法实现跨窗口通信
如网页http://aaa.com向网页http://bbb.com发送信息
var popup=window.open("http://aaa.com","title");
popup.postMessage('hello world','http://bbb.com');//postMessage方法有两个参数,第一个参数是要发送的信息,第二个参数代表信息发送的地址
//在http://bbb.com中设置接收消息
window.addEventListener('message',function(e){console.log(e.data);},false);
2.重绘和回流
1.重绘
重绘是当节点需要更改外观而不会影响布局的,比如更改节点的颜色属性
2.回流
回流是指布局或者几何属性需要改变就称为回流
3.联系
回流一定会引发重绘,但重绘不一定引发回流,回流的成本要比重绘的成本大