5

所以假设我这样做

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

因此用户单击窗口 A 上的元素并打开一个新窗口(称为窗口 B)...

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

我知道你可以这样做:

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

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

但是如果窗口 B 还没有打开,这将触发一个窗口打开,这是不可取的

如果在窗口 B 未打开的情况下打开而不触发新窗口打开,我如何获得对窗口 B 的引用?(不诉诸饼干技巧)

4

1 回答 1

1

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

读书:

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

来写:

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

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

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

var myWindow = window.open('', 'otherWindowName');
myWindow.blur();
window.focus();
于 2012-09-05T01:34:32.080 回答