1

var が設定されているかどうかを確認する JavaScript がいくつかあります。設定されている場合は、設定されていない場合は何かを行います。

if (reset === 'reset') {
    gallery.unformat(container);
}

resetページがロードされた後にのみ設定されます。したがって、このスクリプトは、ユーザーがページをリロードした後にのみ実行されます。

Firefox で新しいタブを開くとreset設定されていません。クロムで新しいタブを開くresetと設定されます。

したがって、私の場合、クロムはそれを正しく処理し、最初にサイトにアクセスしたときにのみこの変数が設定されるため、すべてが正しく機能します。

私が知りたいのは、変数がタブ間で伝播するかどうかです。もしそうなら、どのブラウザが何をしますか?

4

2 に答える 2

5

変数は、新しいタブ間で保持されるべきではありません。Chrome で見られる動作を再現できません。

を使用するcookiesか、HTML5 にしたい場合は を参照してくださいlocalStorage

これらは両方とも、タブごとではなくドメイン固有です。

例えば ​​ではlocalStorage、あなたは行くことができます;

// Check that localStorage is supported in the current browser, and then try
// to retrieve the item.
if ('localStorage' in window && localStorage.getItem('reset') === 'reset') {
    gallery.unformat(container);
}

resetその後、次の方法で後で設定できます。

localStorage.setItem('reset', 'reset');
于 2012-07-19T09:44:26.417 に答える
4

いいえ、変数値はタブ間で伝播されるべきではありません。各タブには独自のグローバル名前空間が必要です。あるタブが別のタブの JavaScript に影響を与える可能性がある場合、あらゆる種類のセキュリティの問題が発生します。

于 2012-07-19T09:45:42.560 に答える