Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iframe跨域获取CSS_Javascript_Css_Iframe_Cross Domain_Xss - Fatal编程技术网

Javascript iframe跨域获取CSS

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

我有一个带有css的html页面,我需要css来控制该页面上iframe的内容。我可以控制iframe中的页面,如果页面和框架都是彼此本地的,则以下代码可以工作:

<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
  • f
    将CSS URL作为JSON序列化消息发送,并且
    g
    将CSS加载到iframe中