1

多くの localstorage キーを必要とするものを作成しています。したがって、Math.floor を使用してユーザー キーをランダムに生成したいと考えていました。

以下を使用してローカルストレージキーを保存しました

var randomnumber = Math.floor((Math.random()*100000000)+1)
var randomnumberstringify = String(randomnumber) 

    function savebox(id) {
        var answer = document.getElementById('box').value;
        document.write(randomnumberstringify);
        localStorage.setItem(randomnumberstringify, answer);
    }

そして、キーをロードするための以下

    function loadbox() {
        if (localStorage.getItem(randomnumberstringify)) {
        var answer = localStorage.getItem(randomnumberstringify);
    }

    else {
        var answer = ' ';
    }

    document.getElementById('box').value = answer;
    }

ただし、ご覧のとおり、ロード関数は「randomnumberstringify」を使用しています。これは別の乱数です

したがって、基本的に、1 つの乱数で保存し、別の乱数をロードします (これは明らかに存在しません)。

乱数をロードキーと保存キーとして使用するより良い方法はありますか?

4

1 に答える 1

0

loadとのsave呼び出しが同じブラウザー セッションで発生し、 との両方randomnumberstringifyの関数からアクセスできるスコープにキーが存在し、そのスコープに対して再度作成されない場合は、このアプローチを使用しても問題ありません。saveload

ただし、実行しようとしているのは、ローカル ストレージを永続的なストレージ ユニットとして使用することです。つまり、異なるページ ロードまたは異なるブラウザー セッションで、特定のユーザーの同じデータにアクセスしたいということです。ロードごとに、javascript 変数スペースが消去されます。

後者の場合は、ハッシュ関数を使用してキーを生成し、ユーザー依存の文字列を使用してハッシュ関数を生成して、毎回同じユーザーに対して同じキーを生成する必要があります。

たとえば、JavaScript 環境で sha1 ハッシュ関数が定義されているとします。

var randomnumberstringify = sha1('username');

このキー生成方法により、毎回同じユーザーに対して同じキーを取得できます。また、問題なく設定して、関連するデータのみを取得できます。

ここ : http://www.webtoolkit.info/javascript-sha1.htmlでは、ハッシュ関数 SHA1 の JavaScript 実装を見つけることができます。

于 2013-10-07T12:09:21.420 に答える