在请求发送后关闭用 javascript 打开的 window
closing a window opened with javascript after the request has sent
在带有 javascript 的新 window 中打开 url 时,有没有办法在加载时关闭 window(到不同的来源)?
以下工作正常:
var callWindow = $window.open("http://myexternalsite/?stuff=blah", "_blank");
callWindow.close();
但显然它会在向 http://myexternalsite/?stuff=blah
发送请求之前关闭 window。我不关心得到响应,只关心请求完成。
我无法将 window.close()
事件添加到响应页面,因为那不是打开它的脚本...所以看来我剩下的只是手动超时,希望它能及时完成.
我也不能只将此作为一个简单的 http 请求来执行,因为该站点在 https 上运行并且调用是针对没有 ssl 证书的(内部网络)服务器。
您需要让 window 您正在打开的页面告诉您的页面它已加载。最好的方法是使用 postMessage
.
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
首先,您的页面需要开始侦听消息:
window.addEventListener("message", messagelistener);
其次,您在新 window 中加载的页面必须 post 向其开启者(您的页面)发送一条消息:
window.opener.postMessage(message, targetOrigin);
targetOrigin
是一个字符串,必须匹配您页面的主机(协议 + 主机名 + 端口)
您需要创建 messageListener
事件处理函数。在此您应该验证 event.origin
是您打开的页面,以便此消息实际上来自该页面。
您从打开的页面发送的 message
可用于验证是否一切正常,或者您可以发送任何内容,在您的 messageListener
中假设来自打开的任何消息页面意味着它加载正常。
如果您在 messageListener
函数中确定打开的页面已验证应该关闭,则将其关闭。
在带有 javascript 的新 window 中打开 url 时,有没有办法在加载时关闭 window(到不同的来源)?
以下工作正常:
var callWindow = $window.open("http://myexternalsite/?stuff=blah", "_blank");
callWindow.close();
但显然它会在向 http://myexternalsite/?stuff=blah
发送请求之前关闭 window。我不关心得到响应,只关心请求完成。
我无法将 window.close()
事件添加到响应页面,因为那不是打开它的脚本...所以看来我剩下的只是手动超时,希望它能及时完成.
我也不能只将此作为一个简单的 http 请求来执行,因为该站点在 https 上运行并且调用是针对没有 ssl 证书的(内部网络)服务器。
您需要让 window 您正在打开的页面告诉您的页面它已加载。最好的方法是使用 postMessage
.
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
首先,您的页面需要开始侦听消息:
window.addEventListener("message", messagelistener);
其次,您在新 window 中加载的页面必须 post 向其开启者(您的页面)发送一条消息:
window.opener.postMessage(message, targetOrigin);
targetOrigin
是一个字符串,必须匹配您页面的主机(协议 + 主机名 + 端口)
您需要创建 messageListener
事件处理函数。在此您应该验证 event.origin
是您打开的页面,以便此消息实际上来自该页面。
您从打开的页面发送的 message
可用于验证是否一切正常,或者您可以发送任何内容,在您的 messageListener
中假设来自打开的任何消息页面意味着它加载正常。
如果您在 messageListener
函数中确定打开的页面已验证应该关闭,则将其关闭。