使用css将div复制到窗口弹出窗口

时间:2013-11-18 20:16:38

标签: css html

我正在尝试使用div并将其基本放在子窗口中。域名将是相同的,所以我认为我可以做流动(parm win是div)。

popOut = function ( win )
    {
        var newWindow = window.open( "about:blank", "", "toolbar=yes, scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400", false );

        newWindow.onload = function () 
        {
            this.focus
            this.document.body.appendChild( win );
        };

    }

这似乎可以完成这项工作,但是css被破坏了。考虑到这一点,新窗口肯定不知道包含和css文件。我可以通过某种方式复制或注入此信息吗?

假设新窗口对其父窗口一无所知我是否正确,因此从子节点到父节点不能运行任何函数?

1 个答案:

答案 0 :(得分:2)

新窗口肯定知道它的开启者以及开启者知道弹出窗口。如果问题是新窗口没有看到开启者样式,则以下代码应该将样式从opener复制到popup。

将其放在var newWindow = window.open(...)

之后
var linkrels = document.getElementsByTagName('link');

for (var i = 0, max = linkrels.length; i < max; i++) {

    if (linkrels[i].rel && linkrels[i].rel == 'stylesheet') {

      var thestyle = document.createElement('link');
      var attrib = linkrels[i].attributes;
      for (var j = 0, attribmax = attrib.length; j < attribmax; j++) {
         thestyle.setAttribute(attrib[j].nodeName, attrib[j].nodeValue);
      }
      newWindow.document.documentElement.appendChild(thestyle);

   }
}

我没有机会测试它,但这样的事情应该有用。