如何在使用Javascript加载后关闭我打开的窗口?

时间:2016-05-24 23:46:46

标签: javascript javascript-events

有没有办法让我在加载后在新窗口中打开链接?

我尝试过这两种方法,但是窗口不会自行关闭。

方法1:

var winning = window.open("https://google.com/","","width=500,height=500");
winning.onload = function(){
  winning.close();
}:

方法2:

var winning = window.open("https://google.com/","","width=500,height=500");
winning.addEventListener('onload', function(){
  winning.close();
}, false);

我有点疯狂。我错过了一些明显的东西,还是这根本不可能?

2 个答案:

答案 0 :(得分:2)

您正在进入相同的同源政策。您无法在不同来源的文档上捕获load事件(因为它会告诉您页面已成功加载,这可能会泄漏信息,例如"用户登录此站点,否则将丢弃一个禁止的错误")。

如果我将URL更改为与出现JavaScript的页面具有相同原点的URL,则可以正常工作。

您最接近的是估计文档加载和使用setTimeout关闭它所需的时间。

答案 1 :(得分:0)

可以将事件监听器附加到另一个窗口,但如果两个窗口都在同一个域/协议/端口上,则

Same-Origin Policy限制了您可以跨域访问的属性和事件,与iframe(触发load事件的load事件不同,您可以收听) ,您不能将window.open事件侦听器附加到使用winning.addEventListener('onload', function(){ 创建的窗口,除非它们满足同源策略。

另外,在旁注中,这是一个错字:

winning.addEventListener('load', function(){

应该是:

on

使用addEventListener时,您不会包含headOption前缀。