前言:
上一篇的排版好难看,字体都不能设置,我们可不可以不悲伤——怎么可能
正文:
先复习一下jsonp,上图一张【源】
iFrame解决跨域
如果两个网页不同源,就无法拿到对方的DOM:iframe
窗口和window.open
方法打开的窗口,它们与父窗口无法通信
document.getElementById("myIFrame").contentWindow.document
// Uncaught DOMException: Blocked a frame from accessing a cross-origin frame.
window.parent.document.body
// 报错
1、如果两个窗口一级域名相同,二级域名不同,设置document.domain拿到DOM(共享cookie)
A网页是http://w1.example.com/a.html
,B网页是http://w2.example.com/b.html
,那么只要script中设置相同的document.domain
,两个网页就可以共享Cookie、拿到DOM
document.domain = 'example.com';
A通过脚本设置cookie:document.cookie = "test1=hello";B可以读到var allCookie = document.cookie;
对应完全不同源的网站,三种方法,解决:
1、片段识别符fragment identifier
fragment identifier指URL的#后部分,只是改变片段标识符,页面不会刷新
父窗体将信息写入子窗口的片段标识符:
var src = originURL + '#' + data;
document.getElementById('myIFrame&