Javascript iframe跨域获取CSS
我有一个带有css的html页面,我需要css来控制该页面上iframe的内容。我可以控制iframe中的页面,如果页面和框架都是彼此本地的,则以下代码可以工作:Javascript iframe跨域获取CSS,javascript,css,iframe,cross-domain,xss,Javascript,Css,Iframe,Cross Domain,Xss,我有一个带有css的html页面,我需要css来控制该页面上iframe的内容。我可以控制iframe中的页面,如果页面和框架都是彼此本地的,则以下代码可以工作: <script type="text/javascript"> window.onload = function() { if (parent) { var oHead = document.getElementsByTagName("head")[0]; var arrStyleS
<script type="text/javascript">
window.onload = function() {
if (parent) {
var oHead = document.getElementsByTagName("head")[0];
var arrStyleSheets = parent.document.getElementsByTagName("style");
for (var i = 0; i < arrStyleSheets.length; i++)
oHead.appendChild(arrStyleSheets[i].cloneNode(true));
}
}
</script>
window.onload=函数(){
如果(家长){
var oHead=document.getElementsByTagName(“head”)[0];
var arrStyleSheets=parent.document.getElementsByTagName(“样式”);
对于(var i=0;i
但是,如果带有iframe的页面和iframe所在的页面位于不同的域上,则不起作用。有人知道我如何让它跨两个域工作,或者有其他解决方案吗
提前感谢:)
由于iframe中显示的是我的页面,我是否可以允许用户让他们的css覆盖我的页面???您在框架中加载的站点必须在您指示访问者的浏览器使用JS在它和您的站点之间交换信息之前。默认情况下。在目标站点上添加此HTTP头:
Access-Control-Allow-Origin: *
请参见您必须使用的。基本上,算法应该是这样工作的:
- 在父帧中,在加载iframe之前添加消息侦听器
f
- 在iframe中,设置消息侦听器
,并在加载后将消息发送到g
f
将CSS URL作为JSON序列化消息发送,并且f
将CSS加载到iframe中g