我如何关闭在 Javascript 加载后打开的 window?
How do I close a window I opened after it loads with Javascript?
有没有办法让我在加载后在新 window 中打开 link?
这两种方法我都试过了,但是windows不会自己关闭。
方法一:
var winning = window.open("https://google.com/","","width=500,height=500");
winning.onload = function(){
winning.close();
}:
方法二:
var winning = window.open("https://google.com/","","width=500,height=500");
winning.addEventListener('onload', function(){
winning.close();
}, false);
我快要疯了。我是否遗漏了一些明显的东西,或者这根本不可能?
您遇到了相同的同源策略。您无法在不同来源的文档上捕获 load
事件(因为它告诉您页面已成功加载,这可能会泄露 "The user is logged into this site which would otherwise throw a Forbidden error" 等信息)。
如果我将 URL 更改为与出现 JavaScript 的页面具有相同来源的那个,那么它就可以工作了。
您最接近的是估计加载文档需要多长时间,然后使用 setTimeout
关闭它。
您 可以 将事件侦听器附加到另一个 window,但是 仅 如果两个 windows 都打开同样的 domain/protocol/port.
Same-Origin Policy 限制了你可以跨源访问的属性和事件,不像 iframe
(它触发了一个你可以收听的自己的 load
事件),你无法将 load
事件侦听器附加到使用 window.open
创建的 window,除非它们满足同源策略。
此外,请注意,这是一个错字:
winning.addEventListener('onload', function(){
应该是:
winning.addEventListener('load', function(){
使用 addEventListener
时不包括 on
前缀。
有没有办法让我在加载后在新 window 中打开 link?
这两种方法我都试过了,但是windows不会自己关闭。
方法一:
var winning = window.open("https://google.com/","","width=500,height=500");
winning.onload = function(){
winning.close();
}:
方法二:
var winning = window.open("https://google.com/","","width=500,height=500");
winning.addEventListener('onload', function(){
winning.close();
}, false);
我快要疯了。我是否遗漏了一些明显的东西,或者这根本不可能?
您遇到了相同的同源策略。您无法在不同来源的文档上捕获 load
事件(因为它告诉您页面已成功加载,这可能会泄露 "The user is logged into this site which would otherwise throw a Forbidden error" 等信息)。
如果我将 URL 更改为与出现 JavaScript 的页面具有相同来源的那个,那么它就可以工作了。
您最接近的是估计加载文档需要多长时间,然后使用 setTimeout
关闭它。
您 可以 将事件侦听器附加到另一个 window,但是 仅 如果两个 windows 都打开同样的 domain/protocol/port.
Same-Origin Policy 限制了你可以跨源访问的属性和事件,不像 iframe
(它触发了一个你可以收听的自己的 load
事件),你无法将 load
事件侦听器附加到使用 window.open
创建的 window,除非它们满足同源策略。
此外,请注意,这是一个错字:
winning.addEventListener('onload', function(){
应该是:
winning.addEventListener('load', function(){
使用 addEventListener
时不包括 on
前缀。