我有一些JavaScript会查看是否设置了var,如果已设置,则执行某些操作,如果不设置。
if (reset === 'reset') {
gallery.unformat(container);
}
reset
仅在页面加载后设置。所以这个脚本只会在用户重新加载页面后执行。
如果我在firefox reset
中打开新标签页未设置。如果我在Chrome reset
中打开新标签页已设置。
因此,对于我的情况,chrome正确处理它,并且只有在第一次访问站点时才会设置此var,因此一切正常。
我想知道变量是否会在标签之间传播,如果是,哪些浏览器会做什么?
答案 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,则会出现各种安全问题。