javascript - 失去焦点时关闭弹出窗口

标签 javascript

我想知道是否可以使用 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/

相关文章:

javascript - 这场比赛为何失败?

接受两个成绩数组的 JavaScript 函数

javascript - 传递给 history.pushState 的状态对象是什么,它有什么作用?

javascript - 无法从 Express 中的 post 方法获取信息

javascript - Coffeescript 翻译 - 嵌套 for 循环

javascript - 使用 angularjs 将数据保存在 json 本地存储中

javascript - Erro 将 Hex 转换为 Ascii Javascript

javascript - 在 webkit 可执行文件中包装 html/css/js?

javascript - Node.js exec 调用永远不会调用回调

javascript - WebGL 不绘制简单的三 Angular 形