Sean Green
Sean Green

Reputation: 113

copy a div to a window popup with css

I'm trying to take a div and basically put it in a child window. The domains are going to be the same so I figure I could do the flowing ( where parm win is the 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 );
        };

    }

This seems to do the job but the css is clobbered. In thinking about this, the new window certainly knows nothing of the includes and css files. Can I copy or inject this info over somehow?

Would I be correct in assuming the new window knows nothing of its parent, thus no function can be ran from child to parent?

Upvotes: 2

Views: 475

Answers (1)

Yuriy Galanter
Yuriy Galanter

Reputation: 39807

New window is definitely aware of its opener as well as opener aware of the popup. If the problem is new window not seeing opener styles, the following code should copy styles from opener to popup.

Place this after 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);

   }
}

I haven't got a chance to test it, but something like this should work.

Upvotes: 2

Related Questions