我正在尝试使用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文件。我可以通过某种方式复制或注入此信息吗?
假设新窗口对其父窗口一无所知我是否正确,因此从子节点到父节点不能运行任何函数?
答案 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);
}
}
我没有机会测试它,但这样的事情应该有用。