如何解决window.close不适用于Twitter网站
我有一个打开Twitter URL的代码(window.open()),但我认为Twitter正在清除/擦除我的窗口引用,这就是为什么我无法再控制窗口或使用window.close()关闭它的原因。解决办法是什么?
我尝试进行console.log记录,如果网站加载,则窗口始终为null。 这是代码:
var windows = {};
function OpenWindow(id,url,title,w,h,l) {
$.each(windows,function(index,value) {
if (windows[index].closed) {
$('#' + index + '').css("background-color","");
}
});
$('#' + id + '').css("background-color","#F2F5F7");
// Fixes dual-screen position Most browsers Firefox
var dualScreenLeft = window.screenLeft != undefined ? window.screenLeft : screen.left;
var dualScreenTop = window.screenTop != undefined ? window.screenTop : screen.top;
width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
var left = ((width / 2) - (w / 2)) + dualScreenLeft;
var top = ((height / 2) - (h / 2)) + dualScreenTop;
var newWindow = window.open(url,'scrollbars=yes,width=' + w + ',height=' + h + ',top=' + top + ',left=' + l);
windows[id] = newWindow;
// Puts focus on the newWindow
if (window.focus) {
newWindow.focus();
}
}
//When I tried to close this window using this function
//It is no longer working and the window is null
function closeWindow(name) {
var window = windows[name];
if (window) {
window.close();
delete windows[name];
}
}
解决方法
这是因为 twitter.com 使用“同源” cross-origin-opener-policy
标头。
由于您的页面来自不同的来源,因此将创建一个新的顶级浏览上下文,并且您的浏览上下文将始终将这个新的浏览上下文视为已关闭,并且将无法关闭它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。