1

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

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

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

如果我在 Firefox 中打开一个新标签,reset则未设置。如果我在 chrome 中打开一个新标签,reset则设置。

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

我想知道变量是否跨选项卡传播,如果是,哪些浏览器会做什么?

4

2 回答 2

5

变量不应新选项卡中持续存在。我无法重现您在 Chrome 中看到的行为。

你应该看看 using 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 回答