重载后检测窗口是否存在

时间:2012-09-04 18:44:09

标签: javascript jquery browser window refresh

所以假设我这样做

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

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

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

我知道你可以这样做:

var hasWindow = window.open('', 'name');

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

但是如果窗口B尚未打开,则会触发窗口打开,这是不合需要的

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

1 个答案:

答案 0 :(得分:1)

在不存储cookie的情况下保持LITTLE位状态的最佳方法是将一些内容保存到window.name中。但它只能使用字符串,所以如果你想要的不仅仅是一点数据,你需要将它保存为JSON字符串。

阅读:

var keptState;
if (window.name !== "") {
    keptState = JSON.parse(window.name);
}

写:

state = {
    "popupOpened" : true,
    "popupName" : "otherWindowName"
};
window.name = JSON.stringify(state);

在刷新的另一端(甚至导航离开网站并返回),它会保留您想要的变量。但是,如果你真的想要引用另一个窗口,那么你就可以自己做了。我想不出有任何方法可以确定它实际存在。如果有人自己关闭了弹出窗口,这将是一个问题。

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

var myWindow = window.open('', 'otherWindowName');
myWindow.blur();
window.focus();