document.cookie='foobar'
。其后:
console.log(document.cookie.indexOf('foobar'))
。在Chrome上进行测试时,总是给我0
。
Chrome浏览器的订单是否得到保证?
(也可能对Ecmascript / Firefox / etc。感兴趣)
答案 0 :(得分:0)
我认为您可能认为document.cookie
是某种数组。但是document.cookie
只是string
。
'foobar'.indexOf('foobar')
返回0
,因为在索引0处发现了foobar
。
答案 1 :(得分:0)
不,不能保证订单。
document.cookie
是具有本地setter和getter函数的访问器属性。如果您设置一个值,则将添加/更新单个cookie。如果得到该值,将返回所有cookie的以分号分隔的列表。
列表的返回顺序(据我所知)是未定义的行为。 “文档对象模型(DOM)2级HTML规范”中的The definition of document.cookie
仅声明:
读取此属性后,所有cookie均作为单个字符串返回,每个cookie的“名称/值”对被连接到“名称-值”对的列表中,每个列表项均以“;”分隔。 (分号)。
通常(在Chrome / Firefox / Edge上测试),似乎首先返回使用document.cookie
设置的cookie。因此,在您的情况下,如果在设置“ foobar”之前设置了另一个cookie,则“ foobar”将不会位于字符串索引0。
document.cookie='anothercookie=anothercookie';
document.cookie='foobar=foobar';
console.log('cookie', document.cookie); // cookie anothercookie=anothercookie; foobar=foobar
console.log('index', document.cookie.indexOf('foobar')); // index 29
有趣的是,使用set-cookie
标头设置的cookie似乎放在使用document.cookie
设置的cookie的后面,尽管它们是先设置的。可以找到here的小提琴。