javascript - 有没有办法确定浏览器窗口是弹出窗口,还是只是使用目标 ="_blank"的新窗口?

标签 javascript jquery google-chrome popup

我正在维护一个大型应用程序。在某些区域,我必须检查当前窗口是弹出窗口(使用 window.open() 打开)还是新窗口(使用 target="_blank"打开的新选项卡或窗口)。

这是我的问题的示例:

    function CancelOutOfPage(cancelPath) {
        if (cancelPath != null && cancelPath != "" && window.opener == null) {
            location.href = cancelPath;
        } else if (referrerUrl != "" && window.opener == null) {
            // Just go back
            location.href = referrerUrl;
        } else {
            // It is a popup, close it.
            // MY PROBLEM IS HERE. IF THE WINDOW IS NOT A POPUP, BUT A AN OPENED PAGE
            // THE WHOLE WINDOW WILL CLOSE
            window.close();
        }
    }

最佳答案

您可以在打开弹出窗口时设置一个全局变量,然后如果变量是真值,您就知道它是一个弹出窗口 - 如果它是未定义,它将是false:

在调用页面中:

var popupWindow = window.open(page);
popupWindow.isPopup = true;

在新窗口中:

if (window.isPopup) { 
    window.close();
}

更新:

您也可以在打开弹出窗口时设置窗口的名称。 window.open函数采用第二个参数作为名称,后跟可选的窗口功能。

在调用页面中:

window.open("test.html", "Test Popup");

在新窗口中:

if (window.name.length) { 
    window.close();
}

关于javascript - 有没有办法确定浏览器窗口是弹出窗口,还是只是使用目标 ="_blank"的新窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332723/

相关文章:

javascript - React/Redux 无法读取未定义的属性 'setCurrent'

javascript - jQuery Tablesorter 错误 "Uncaught TypeError: Cannot set property ' 计数'未定义”

javascript - 为什么我会收到 .post 和 hide ("slide") 的 jQuery 语法错误?

javascript - Facebook JavaScript SDK 不适用于 Chrome 扩展

google-chrome - Electron 网页 View 在极少数情况下会变得困惑

javascript - 这是 Xpath 评估中的 Chrome 错误吗

javascript - 使用 JavaScript 比较日期

javascript - React Native 渲染多维数组

javascript - 如何测试坐标是否在菱形区域?

javascript - Bootstrap 日期时间选择器不工作