Javascript 用户会话到期时所有窗口都需要关闭如何?
我正在尝试关闭会话存储窗口,它不工作吗 对于我来说,我在不同的模块中打开新窗口,因此我无法维护“Var”,因为我在应用程序中全局使用会话存储Javascript 用户会话到期时所有窗口都需要关闭如何?,javascript,jquery,jsfiddle,session-storage,Javascript,Jquery,Jsfiddle,Session Storage,我正在尝试关闭会话存储窗口,它不工作吗 对于我来说,我在不同的模块中打开新窗口,因此我无法维护“Var”,因为我在应用程序中全局使用会话存储 打开“我的窗口” 关闭“我的窗口” var-my1; 函数openWin(){ my1=窗口。打开(“,”myWindow“,”宽度=200,高度=100”); 警报(my1) sessionStorage.setItem('aa',my1); } 函数closeWin(){ var retrievedObject=sessionStorage.get
打开“我的窗口”
关闭“我的窗口”
var-my1;
函数openWin(){
my1=窗口。打开(“,”myWindow“,”宽度=200,高度=100”);
警报(my1)
sessionStorage.setItem('aa',my1);
}
函数closeWin(){
var retrievedObject=sessionStorage.getItem('aa');
retrievedObject.close();
}
我在plunker中为您创建了一个工作版本
但是,你需要考虑的是,如果你的代码在一个选项卡中运行并被关闭,那么你的代码将永远不会运行以关闭其他窗口,而用户必须关闭它们。 顺便说一句:您的代码在
stackoverflow
内部无法工作,因为它是沙盒
。(您无权访问其中的会话存储)
更新:
因为my1是对窗口实例的引用,所以当您将其放入sessionStorage中时,它将丢失引用。所以我唯一想到的就是把它存储在本地。看看更新后的plunker。会话存储包含字符串,无法存储对窗口的引用……但当我记录其返回的窗口对象时,@epascarelloYou完全正确。因为您正在存储window对象的实例,所以它会以某种方式释放引用。看看更新@epascarello@Yaser我知道,但在我的情况下,我需要关闭所有的新窗口,所以我怎么能,没有全局变量我什么都做不了你可以将它们添加为数组并循环通过它来关闭所有如何为我的整个应用程序保留全局数组,因为我将在不同的应用程序中打开新选项卡&如果是nee选项卡,您将无法访问它们,因此无法从一个选项卡关闭它们,您唯一能做的就是在每个选项卡中插入一个函数,并在到期时自行关闭它们