0

ブラウザーのウィンドウ/タブ間で情報を共有しようとしていますが、ブラウザーのサポートの問題により、HTML5 のローカル ストレージに不安を感じています。いくつかのグーグル検索で、これには Cookie を使用できると思われるので、jquery.cookie を取得して簡単なテストをセットアップしました。

ロード時に Cookie を書き込む 2 つのページ:

$.cookie("testValue", new Date().getTime());

そして、それぞれのアラートに Cookie 値を表示するボタン:

alert($.cookie("testValue"));

テストすると、各ページに異なる値が表示されるため、これは機能しないと思われますが、ここや他の場所で人々が推奨しているように見える投稿に出くわし続けているので、間違ったことをしているだけですか?

4

3 に答える 3

2

Cookie は、JS によって設定されたとき、またはページが読み込まれたときに、JavaScript 環境でのみ更新されます。

localStorage はこのために設計されました。IE8 は問題なくサポートしていますが、サポートしていないのは本当に古い IE7 以下だけです。IE9 は Windows Vista および 7 専用ですが、IE8 は XP で問題なく使用できるため、古いブラウザーを使用しているユーザーに更新を依頼するのに問題はありません。

(これだけでは十分とは言えませんが、IE には他のすべてのブラウザーと同様に自動アップデーターが必要です...)

于 2012-02-17T14:44:29.900 に答える
0

試行番号 2 = P

次のようなことを試してください:

<iframe id="cookies" src="refresher.html" style="display: none"; />
<script type="text/javascript">
    (function() {
        var ifr = document.getElementById('cookies');
        setInterval(function() {
            var cd = ifr.contentDocument.cookie.split(";");
                l = cd.length, i, k, ret = {};
            for( i=0; i<l; i++) {
                k = cd[i].split("=");
                k[0] = k[0].replace(/^ +| +$/g,'');
                k[1] = k[1].replace(/^ +| +$/g,'');
                ret[k[0]] = k[1];
            }
            window.cookiedata = ret;
        },5000);
    })();
</script>

refresher.html:

<script type="text/javascript">setTimeout(function() {location.reload();},5000);</script>

jQuery$.cookieを使用して Cookieを設定することはできますが、取得するにはcookiedata.cookiename.

5000応答性とデータのリロードの間の適切な妥協点と思われるものに調整します。

于 2012-02-17T14:58:10.990 に答える
0

DateTime()定義されていません。Date()代わりに使用してください。

$.cookie("testValue", new Date().getTime());

とにかく、それは私のために働きます。以下は単純な html ページです。

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>demo</title>  
  <script type='text/javascript' src='http://code.jquery.com/jquery-1.7.1.js'></script>  
  <script type='text/javascript' src="https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js"></script>
  <script type='text/javascript'>
    $(window).load(function(){
        $("#get").click(function(){
            alert($.cookie("testValue"));
        });
        $("#set").click(function(){
            $.cookie("testValue", new Date().getTime());
        });
    });
  </script>
</head>
<body>
  <a id="get" href="#">get cookie</a>
  <a id="set" href="#">set cookie</a>
</body>
</html>

FireFox 10.0 を使用して localhost で試しました。

于 2012-02-17T14:47:19.500 に答える