以下是我的javascript代码。
弹出窗口正在打开,但我的页面正在刷新。现在我必须关闭弹出窗口。我想在localStorage中保存popupWindow
。但是当我通过localStorage.getItem("someVarName")
时。我没有得到原始的dom,看起来像它改变了。
当我的页面正在刷新时,我必须保存dom。
请建议如何操作。
<script language="javascript" type="text/javascript">
function openPopup(URL) {
popupWindow = window.open(URL, 'popupWindow', 'height=300,width=450');
localStorage.setItem("someVarName", popupWindow);
}
function closePopup() {
var popupWindow = localStorage.getItem("someVarName");
popupWindow.close();
}
</script>
答案 0 :(得分:1)
网络存储字符串。您无法在其中存储窗口参考。
你可以,但是,存储您使用的名称并将其重用于window.open
:
function openPopup(URL) {
window.open(URL, 'popupWindow', 'height=300,width=450');
localStorage.setItem("someVarName", "popupWindow");
}
function closePopup() {
var name = localStorage.getItem("someVarName");
if (name) {
var wnd = window.open("", name);
wnd.close();
localStorage.removeItem("someVarName");
}
}
使用您的网页有权访问的现有窗口的名称调用window.open
,可以引用该现有窗口,而不是打开一个新窗口。
请注意当窗口未打开时我是如何从存储中清除名称的,所以我们不会尝试关闭它(矛盾的是,打开它)。
我的answer to this other question有一个完整的例子。