我想知道是否可以使用 JavaScript 创建一个弹出窗口,然后在失去焦点时关闭该窗口。
这是我的代码:
var theWindow;
function launchWindow() {
theWindow=window.open('www.domain.com');
theWindow.onblur = function() {
this.close();
};
}
但这根本不起作用。有什么建议吗?
编辑:我发现了一个适合我的解决方案,希望它也适用于其他人:
var theWindow;
var windows = [];
function launchWindow() {
theWindow=window.open('www.domain.com');
windows.push(theWindow);
window.onfocus = function() {
for (x in windows) {
windows[x].close();
}
};
}
这不是我原来问题的精确解决方案(它在失去焦点时不会关闭窗口,而是在主窗口重新获得焦点时关闭它),但它对我有用。
最佳答案
弹出窗口的 URL 是否与父窗口来自同一域?如果没有,您可能无法将事件附加到新窗口的 onblur 事件。
在查看 StackOverflow 时从浏览器控制台运行此命令,看看当弹出窗口与原始窗口位于同一域时它实际上是否有效:
var theWindow = window.open ("http://www.stackoverflow.com","theWindow");
theWindow.onblur = function() { this.close(); };
关于javascript - 失去焦点时关闭弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7910089/