1

localStorage への呼び出しを傍受する方法はありますか? それとも、いくつかのハンドラーが存在しますか?

localStorage.getItem() のようなコード スクリプトのどこかにある場合、ストレージが何らかのアイテムを取得することを知る必要があり、これを防ぎ、必要なことを行いたいと考えています。

モバイル Web 開発者向けのフレームワークを作成したいと考えています。通常の方法で localstorage 呼び出しを使用してもらいたいです。私のフレームワークはこの呼び出しをインターセプトし、データを W3C ストレージではなくネイティブ デバイス ストレージに配置します。それは可能ですか?ありがとう。

4

3 に答える 3

0

API のすべての部分を複製することはできないかもしれませんが、localStorage 変数全体を独自のものに置き換えることができます...

var localStorage = (function () {
    return {
        setItem: function (key, value) {
            alert(key);
        }
    };
}());

localStorage.setItem('a', 'b');

コードが目に見えないように同じインターフェイスを実装する必要がありますが、この例でsetItemはすべてを行う方法を示しています。

古い localStorage を変数にポップして保持する場合は、引き続き呼び出すことができます。

他の場所に保存するかどうかを決定するためにテストする条件を実装していません。

もちろん、これを少し変更して、別の名前を付けることでインターセプターではなくライブラリにすることもできます...これにより、人々が従うための固定APIを実装できます。

var storageLibrary = (function () {
    return {
        setItem: function (key, value) {
            alert(key);
            if (true) {
                localStorage.setItem(key, value);
            } else {
                // Save it somewhere else   
            }
        }
    };
}());

storageLibrary.setItem('a', 'b');
于 2013-12-20T14:51:43.233 に答える
0

window- で起動された storage イベントを使用して、 localStorage および sessionStorage への変更を追跡できます。

イベントは、同じオリジンから開いているすべてのタブまたはページで発生します。

function storageHandler(e){
    var info={
        key:e.key, oldV:e.oldValue, newV:e.newValue, url:e.url || e.uri
    };
    //do something with info
}
window.addEventListener('storage', storageHandler, false);

特別なストレージ イベント プロパティ:

key- the named key that was added, removed, or modified
oldValue- the previous value(now overwritten), or null if a new item was added
newValue-the new value, or null if an item was removed
url or uri-     the page which called a method that triggered this change

以下の IE #9 (attachEvent とグローバル イベント処理) と localStorage のサポートをテストする必要がある場合があります。

于 2013-12-20T15:33:44.863 に答える