現在使用しているコードは、値を含む Cookie セットがあれば、facebook を使用してログインしたかのように実行されます。'fbsr_haha, gotcha'
おそらく、これは正規表現の仕事です:
/^|;\s*fbsr_[0-9]{4}\=[^;]+;/.test(document.cookie);
トリックを行う必要があります。
式の説明:
^|;
: 文字列の先頭またはセミコロン
\s*
: ゼロ個以上のスペースが続く
fbsr_[0-9]{4}
: fsbr_ および 4 つの数字の任意のシーケンスに一致します
\=
: と書くだけでもかまいませんが、エスケープ(ルックアラウンド)=
が必要になる場合もあります。=
[^;]+
少なくとも 1 回以上セミコロン以外のもの
;
: 文字通りのセミコロン
この式を使用する場所:
function checkCookie()
{
contentDiv=document.getElementById("cookieFb");
if (/^|;\s*fbsr_[0-9]{4}\=[^;]+;/.test(document.cookie))
{//facebooker!
contentDiv.style.display="none";
return;//return here, so you can leve the else out
}
contentDiv.style.display="block";
}
まあ、それはそれを行う必要があります。
しかし、どうしても JS に慣れてきて、スクリプトの一部を最適化したい場合は、次のことを検討してください。
var checkCookie = (function(expr)
{
var contentDiv = document.getElementById('cookieFb');
return function()
{
contentDiv.style.display="block";
if (expr.test(document.cookie))
{
contentDiv.style.display="none";
}
};
}(/^|;\s*fbsr_[0-9]{4}\=[^;]+;/));
これは、あなたが持っているのとまったく同じコードの最適化されたバージョンです。cookieFb
ATM の場合、コードは呼び出されるたびに ID を持つ要素の dom を照会し、 RegExp のインスタンスも作成します。クロージャーを使用すると、DOM を 1 回クエリし、RegExp のインスタンスを 1 回作成して、呼び出しごとに再利用できます。
この場合、それはもう少し効率的で、マイクロ最適化ですが、私は自分自身を助けることができませんでした;)