Asp.net 是否替换Javascript中的window.sessionStorage?

Asp.net 是否替换Javascript中的window.sessionStorage?,asp.net,javascript,cross-browser,Asp.net,Javascript,Cross Browser,我有一个应用程序,它有一个启动页面,需要确定已打开的内容,因此它不会重新打开已在另一个新选项卡中打开的内容。在Firefox中,我能够做到这一点,方法是使用window.sessionStorage存储打开的页面的标题,然后使用window.opener和以下代码从列表中删除标题 在打开的页面上: function signalPageExit() { if (window.opener.sessionStorage) { window.opener.sessionStora

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

在打开的页面上:

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

    window.opener.sessionStorage.removeItem(
     document.getElementById("runcode").childNodes[0].textContent); 
}
这在IE中不起作用,所以我决定使用cookie策略,但cookie从未从动态启动页面上的代码中成功删除,因此页面一旦启动就无法从启动页面重新打开,直到cookie过期

我的第二次尝试是在sessionStorage不存在时定义自己的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");
    }
但真正的会话存储似乎是特殊的,窗口的这个普通对象在回发过程中没有保持活动状态,因此当我的启动页面回发时,创建的页面标题列表被删除

所以,现在我正在寻找一种方法,使这项工作。我有一个名为scoresheets.aspx的启动页面,它根据用户请求创建动态页面。这些页面共享大量javascript代码,可以对这些代码进行修改以使其正常工作


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

您应该使用cookie策略,并将这些cookie设置为在窗口(选项卡)关闭时过期。这应该可以跨浏览器使用。

Eric Garside为多个客户端存储引擎提供了基于jquery的api。

我继续设置了jStore,但jStore javascript内部出现了一个错误。我在谷歌代码上提交了一个问题,希望我能找出哪里出了问题。我自己还没有试过flash引擎。我刚刚检查了ie引擎(#userdata),它可以在ie6到ie8上运行。Cookie会被发送到服务器。如果你有很多数据要存储,那会让一切变得非常非常缓慢。
    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");
    }