iframe及跨域问题
嵌套iframe的以下称为⽗窗⼝,iframe内称为iframe窗⼝
1. 获取
iframe嵌套页面加载慢2. 通过Dom获取
2. 操作iframe窗⼝下元素
获取其window对象:
获取其dom对象:或者通过 contentWindow.document
3.通过iframe⼦窗⼝获取⽗窗⼝
window.parent
4.⼦窗⼝和⽗窗⼝内容通信
⾸先应该遵守同源策略。
跨域通信可以使⽤window.postMessage实现
如给iframe内部发消息: iframe对象.contentWindow.postMessage()
浏览器滚动条位置获取(即当前滚动的地⽅的窗⼝顶端到整个页⾯顶端的距离):jQuery中,为$(document).scrollTop()与$(window).scrollTop(),
因为ie兼容问题,⼀般使⽤$(window).scrollTop(),他俩效果完全相同。
src跨域问题解决
iframe中src是不同域名的情况:解决⽅式,CSP配置或X-Frame-Options配置
CSP 内容安全策略 Content-Security-Policy
Firefox使⽤x-Content-Security-Policy,WebKit使⽤X-WebKit-CSP。未来会逐步过渡到统⼀的标准。
还有Content-Security-Policy,IE不⽀持CSP
iframe嵌套⽅
添加frame-src配置
frame-src CSL-version-1,CSL-version-2中推荐使⽤child-src,但是需要更⾼浏览器⽀持,frame-src沒有,會child-src ⽬前最佳浏览器兼容性的⽅法是同时包含child-src和frame-src.
iframe被嵌套⽅
添加frame-ancestors配置, CSP-version-2
指定可以被内嵌在什么源的⽗页⾯⾥,和X-Frame-Options功效⼀样
值=none 类似于 X-Frame-Options:deny
IE不⽀持CSP,故也不⽀持frame-src和frame-ancestors
⼀般配置CSP就够了,就因为IE,所以需要⽤到X-Frame-Options
参考:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论