gpt4 book ai didi

asp.net - Javascript 中 window.sessionStorage 的替代品?

转载 作者:行者123 更新时间:2023-12-02 20:47:21 24 4
gpt4 key购买 nike

我有一个带有启动页面的应用程序,需要确定已打开的内容,因此它不会重新打开已在另一个新选项卡中打开的内容。在 Firefox 中,我能够通过使用 window.sessionStorage 存储打开的页面的标题来完成这项工作,然后使用 window.opener 和以下代码从列表中删除标题。

Gecko Session Storage Info Page

if (window.sessionStorage) {
if (window.sessionStorage.getItem(code)) {
return; // page already open
}
else {
window.sessionStorage.setItem(code, code);
window.open("Sheet.aspx", "_blank");
}
}

在打开的页面上:

function signalPageExit() {
if (window.opener.sessionStorage) {

window.opener.sessionStorage.removeItem(
document.getElementById("runcode").childNodes[0].textContent);
}

这在 IE 中不起作用,所以我决定使用 cookie 策略,但是 cookie 从未成功地从动态启动页面上的代码中删除,因此页面一旦被删除就无法从启动页面重新打开。启动直到 cookie 过期。

我的第二次尝试是在 sessionStorage 不存在时定义它。看起来像这样:

    function setStoreItem(name, val) {
this.storage[name] = val;
}

function getStoreItem(name) {
return(this.storage[name]);
}

function removeStoreItem(name) {
this.storage[name] = null;
}

function sesStorage() {
this.storage = new storageData();
this.setItem = setStoreItem;
this.getItem = getStoreItem;
this.removeItem = removeStoreItem;
}

// storage object type declaration
function storageData() {

}

// IE 7 and others
else {
window.sessionStorage = new sesStorage();

window.sessionStorage.setItem(code, code);
window.open("Sheet.aspx", "_blank");
}

但似乎真正的 session 存储很特殊,窗口的这个普通对象在回发后并没有保持事件状态,因此当我的启动页面回发时,创建的页面标题列表被清除了。

所以现在我正在寻找一种方法来完成这项工作。我有一个名为 Scoresheets.aspx 的启动页面,它根据用户请求创建动态页面。这些页面共享大量的 JavaScript 代码,可以修改这些代码来实现此目的。

当用户尝试重新打开已启动的页面时,我不想刷新它们,但如果有某种方法可以检测打开的页面的标题,或者有其他方法可以使用 window.opener 与相同的持久性进行通信sessionStorage 有,我很乐意使用它。

最佳答案

埃里克·加赛德的 jStore plugin为多个客户端存储引擎提供基于 jquery 的 api。

关于asp.net - Javascript 中 window.sessionStorage 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/847948/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com