重载后检测窗口是否存在

pil*_*ght 5 javascript browser jquery refresh window

所以我想这样做

var myWindow = false;
$('someelement').click(function(){
  var myWindow = window.open('url', 'name', 'width=100,height=200');
});
Run Code Online (Sandbox Code Playgroud)

所以用户点击窗口A上的元素,打开一个新窗口(称之为窗口B)...

但是假设窗口A被重新加载......由于这个原因,var myWindow现在设置为false ...但是窗口B仍然打开....如何在窗口A之后从窗口A检测到窗口B的存在得到重新加载

我知道你可以这样做:

var hasWindow = window.open('', 'name');
Run Code Online (Sandbox Code Playgroud)

如果它已经打开,它将返回对窗口B的引用.

但是如果窗口B尚未打开,则会触发窗口打开,这是不希望的

如果窗口B打开而没有在窗口B未打开的情况下触发新窗口打开,如何获得对窗口B的引用?(不借助cookie技巧)

Dan*_*ews 1

保留少量状态而不存储在 cookie 中的最佳方法是将某些内容保存到您的 window.name 中。不过,它仅适用于字符串,因此如果您想要的不仅仅是一位数据,则​​需要将其保存为 JSON 字符串。

读书:

var keptState;
if (window.name !== "") {
    keptState = JSON.parse(window.name);
}
Run Code Online (Sandbox Code Playgroud)

来写:

state = {
    "popupOpened" : true,
    "popupName" : "otherWindowName"
};
window.name = JSON.stringify(state);
Run Code Online (Sandbox Code Playgroud)

在刷新的另一边(或者甚至离开站点并返回),它将保留您想要的变量。但是,如果您确实想要引用另一个窗口,则需要您自己完成。我想不出任何方法来确定它确实存在。例如,如果有人自行关闭弹出窗口,这将是一个问题。

至少这样,你可以知道你是否打开过它。如果您确实需要没有弹出窗口的窗口,那么您可以做一个弹出窗口。当我这样做时,这总是感觉有点阴暗,但这可能是满足您要求的最佳方式。

var myWindow = window.open('', 'otherWindowName');
myWindow.blur();
window.focus();
Run Code Online (Sandbox Code Playgroud)