是HTML5 localStorage的对象每页/域分离?我想知道,因为我怎么会说出localStorage的钥匙。我需要一个单独的前缀?或者,我可以为它们命名任何我想要的?

有帮助吗?

解决方案

这是每个域(相同的隔离规则作为同源策略) ,使其每页你必须使用基于location,或一些其他方法的关键。

您不要的需要的前缀,使用一个,如果你需要它虽然。此外,对了,你能说出他们任何你想要的。

其他提示

在商店的每原点,其中原点相同的相同原点政策(架构的组合[httphttps等],端口和主机)。从规范

  

每个顶级浏览上下文都有一组唯一的会话存储区,每一个原点。

因此,对于http://a.example.com存储和用于http://b.example.com存储是分开的(和他们从http://stackoverflow.com两个单独的)的那些都不同的主机。类似地,http://example.com:80http://example.com:8080https://example.com都是不同的来源。

没有内置到web存储机制,允许一个原点到访问的另一存储。

请注意,它的原产地的,而不是URL,那么http://example.com/page1http://example.com/page2都能访问的存储的http://example.com

是啊,每个域/子域有着不同的的localStorage ,并可以调用任何你想要的键(无需前缀)。

要得到可以使用的方法密钥(索引)中的密钥,例如

localStorage.key(0);

有被称为对象的 globalStorage的之前,你可以有多个localStorages,但它已经从规格过时

我总是使用前缀,只是为了避免与用户的脚本潜在的冲突 - 这可能使用localStorage的太

作为其他人指出,localStorage的是每协议,主机&端口唯一的。如果你想与前缀键来控制你的存储的便捷方式,我建议 localDataStorage

它不仅有助于通过前缀键实施在同一域内分割共享存储器,它也透明地存储的javascript数据类型(阵列,布尔值,日期,浮动,整数,字符串和对象),提供轻质数据混淆,自动压缩串,并且通过键(名称)便于查询以及由(key)的值的查询。

[免责声明]我的实用程序的作者[/声明]

示例:

// instantiate our first storage object
// internally, all keys will use the specified prefix, i.e. passphrase.life
var localData = localDataStorage( 'passphrase.life' );

localData.set( 'key1', 'Belgian' )
localData.set( 'key2', 1200.0047 )
localData.set( 'key3', true )
localData.set( 'key4', { 'RSK' : [1,'3',5,'7',9] } )
localData.set( 'key5', null )

localData.get( 'key1' )   -->   'Belgian'
localData.get( 'key2' )   -->   1200.0047
localData.get( 'key3' )   -->   true
localData.get( 'key4' )   -->   Object {RSK: Array(5)}
localData.get( 'key5' )   -->   null


// instantiate our second storage object
// internally, all keys will use the specified prefix, i.e. prismcipher.com
var localData2 = localDataStorage( 'prismcipher.com' );

localData2.set( 'key1', 123456789 )  // integer

localData2.get( 'key1' )   -->   123456789

正如你所看到的,原始的价值得到尊重,你可以创建多个实例来控制你的存储空间。

有在该域上可在任何地方如尼克建议的,作为一种替代有工作的sessionStorage略有不同,因为它是不同的浏览器窗口本身。也就是说在同一域中的其它标签页或窗口没有访问存储对象的相同副本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top