浏览器是否跨选项卡传播javascript变量?

时间:2012-07-19 09:40:51

标签: javascript variables browser cross-browser

我有一些JavaScript会查看是否设置了var,如果已设置,则执行某些操作,如果不设置。

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

reset仅在页面加载后设置。所以这个脚本只会在用户重新加载页面后执行。

如果我在firefox reset中打开新标签页未设置。如果我在Chrome reset中打开新标签页已设置。

因此,对于我的情况,chrome正确处理它,并且只有在第一次访问站点时才会设置此var,因此一切正常。

我想知道变量是否会在标签之间传播,如果是,哪些浏览器会做什么?

2 个答案:

答案 0 :(得分:3)

变量 会在新标签页中保留。我无法重现您在Chrome中看到的行为。

您应该考虑使用cookies,或者如果您想成为HTML5,请查看localStorage

这两个都是特定于域的,而不是每个标签。

E.g。在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');

答案 1 :(得分:2)

不,变量值不应在选项卡之间传播 - 每个选项卡应该有自己的全局命名空间,如果一个选项卡可能影响另一个选项卡中的JavaScript,则会出现各种安全问题。