【问题标题】:detecting the existence of window after reload重新加载后检测窗口的存在
【发布时间】:2023-03-06 10:35:01
【问题描述】:

所以假设我这样做

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 的引用? (不使用 cookie 技巧)

【问题讨论】:

    标签: javascript jquery browser window refresh


    【解决方案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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多