javascript – 删除父母表单子窗口
作者:互联网
我正在处理一个旧的开发人员的网站和代码.
这个人写的GLOBAL打印函数基本上可以检测打开的任何新窗口(从任何方法)和“href.match”es域名…然后脚本应用打印样式表(如果需要)并触发窗口.打印.
这一切都是通过每个页面上的全局脚本完成的,并包含一些其他功能.
我厌倦了为每个页面编写案例,我想要逃避这个功能.此外,如果我为特定页面编写NOT子句,则在子窗口中的域内打开的任何后续页面将接收该打印功能.
有没有办法在这个新窗口中“破坏”继承?基本上要使这个窗口不是产生它的父母的孩子?
addEvent(window, 'load', function () {
var printBtn = document.getElementById('print-page');
if (window.opener && window.opener.location.href.match('domainnamehere')) {
var printCSS = document.createElement('link');
var a = document.getElementsByTagName('a');
printCSS.href = 'css/print.css'
printCSS.setAttribute('type', 'text/css');
printCSS.setAttribute('rel', 'stylesheet');
document.getElementsByTagName('head')[0].appendChild(printCSS);
for (var i = 0; i < a.length; i++) {
a[i].href="";
a[i].onclick = function () { return false; };
a[i].style.cursor = "default";
}
window.print();
} else if (printBtn){
printBtn.onclick = function () {
var printWindow = window.open(window.location, 'printwindow', 'resizable,width=800,height=800,scrollbars');
return false;
};
}
});
解决方法:
opener属性允许访问子窗口,因此如果要断开连接,则只需将其设置为null即可.这样做时,我总是将它复制到另一个属性,然后在因为其他原因需要它时无效…
if(bustInheritance) {
window.oldOpener = window.opener;
window.opener = null;
}
标签:javascript,parent-child,window 来源: https://codeday.me/bug/20190827/1737336.html