我正在维护一个大型应用程序。在某些区域,我必须检查当前窗口是弹出窗口(使用 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/