2009-05-11 4 views
1

既に開かれているものを特定する必要がある起動ページを持つアプリケーションがあるため、別の新しいタブですでに開かれているものを再度開くことはありません。 Firefoxでは、window.sessionStorageを使用して開いているページのタイトルを保存し、次のコードでwindow.openerを使用してリストからタイトルを削除することで、この作業を行うことができました。Javascriptでwindow.sessionStorageを置き換えますか?

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の有効期限が切れるまで、起動ページからページを再開することはできません。

私の2番目の試みは、自分の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は、私はそれを使用してうれしいだろう。

答えて

3

Eric GarsideのjStore pluginは、いくつかのクライアントサイドストレージエンジンにjqueryベースのAPIを提供します。

+0

私はJStoreをセットアップしましたが、JstoreのJavaScriptで内部的にエラーが発生しています。私はGoogleコードに問題を提出したので、うまくいけば何が問題になっているのか理解することができます。 –

+0

私は自分でフラッシュエンジンを試していません。私はちょうどieのエンジン(#userdata)をチェックし、それはie8からie8で動作します。 –

-1

あなたはそのクッキー戦略に合い、ウィンドウ(タブ)が閉じられたときに期限切れになるようにクッキーを設定する必要があります。ブラウザー間で動作するはずです。

+1

Cookieがサーバーに送信されます。保存するデータがたくさんある場合は、すべてが本当に遅くなります。 – tghw

関連する問題