不同的本地存储对象以及如何访问它们
Different localStorage Objects and how to acces them
我正在尝试使用 localStorage 从表单中获取值并在第二页上填写第二个表单的某些字段。存储字段部分运行良好,但在第二页上,有一个 iframe,显然它使用了 localStorage。当我尝试在第二页上使用 localStorage 时,它会从 "second" localStorage 中检索值。
// This displays the correct localStorage info, so on page load, it seems to only be 1 localStorage
console.log(localStorage);
// Retrieve session storage fields
// This comes back as null, second localStorage is loaded?
var firstName = localStorage.getItem('firstName');
var lastName = localStorage.getItem('lastname');
var eMail = localStorage.getItem('eMail');
var phone = localStorage.getItem('phone');
var company = localStorage.getItem('company');
var companyRole = localStorage.getItem('companyRole');
// This does not work as a result
j('#first-name').val(firstName);
j('#last-name').val(lastName);
j('#phone').val(phone);
j('#eMail').val(eMail);
当我检查 "application" Chrom 选项卡下的 localStorage 对象时,我看到 2 个对象并检查第一个,我确实看到了我的数据...我还没有找到任何关于如何访问一个不同的 localStorage 对象,这可能吗?
如您所见here:
Local storage is per origin (per domain and protocol). All pages, from
one origin, can store and access the same data.
所以,如果页面的域和iframe相同,那么localstorage数据。也就是说localstorage数据是按domain保存的,如果代码在主页面或者iframe里面,可以独立CRUD。
But,也就是如果页面和iframe不在同一个域,你只能访问各自域的localstorage。例如,如果您的 javascript 代码位于 iframe 内,则您无法访问主页的本地存储,反之亦然。
本地和会话存储特定于源。例如,以下来源会产生不同的本地和会话存储对象:
https://example.com/
http://example.com/
即使它们是同一个域,它们也有不同的协议。这使他们的起源不同。
如果您不拥有 iframe 的域,则无法从您自己的应用程序读取或修改跨域存储。另一个来源需要接收修改存储的请求。
我正在尝试使用 localStorage 从表单中获取值并在第二页上填写第二个表单的某些字段。存储字段部分运行良好,但在第二页上,有一个 iframe,显然它使用了 localStorage。当我尝试在第二页上使用 localStorage 时,它会从 "second" localStorage 中检索值。
// This displays the correct localStorage info, so on page load, it seems to only be 1 localStorage
console.log(localStorage);
// Retrieve session storage fields
// This comes back as null, second localStorage is loaded?
var firstName = localStorage.getItem('firstName');
var lastName = localStorage.getItem('lastname');
var eMail = localStorage.getItem('eMail');
var phone = localStorage.getItem('phone');
var company = localStorage.getItem('company');
var companyRole = localStorage.getItem('companyRole');
// This does not work as a result
j('#first-name').val(firstName);
j('#last-name').val(lastName);
j('#phone').val(phone);
j('#eMail').val(eMail);
当我检查 "application" Chrom 选项卡下的 localStorage 对象时,我看到 2 个对象并检查第一个,我确实看到了我的数据...我还没有找到任何关于如何访问一个不同的 localStorage 对象,这可能吗?
如您所见here:
Local storage is per origin (per domain and protocol). All pages, from one origin, can store and access the same data.
所以,如果页面的域和iframe相同,那么localstorage数据。也就是说localstorage数据是按domain保存的,如果代码在主页面或者iframe里面,可以独立CRUD。
But,也就是如果页面和iframe不在同一个域,你只能访问各自域的localstorage。例如,如果您的 javascript 代码位于 iframe 内,则您无法访问主页的本地存储,反之亦然。
本地和会话存储特定于源。例如,以下来源会产生不同的本地和会话存储对象:
https://example.com/
http://example.com/
即使它们是同一个域,它们也有不同的协议。这使他们的起源不同。
如果您不拥有 iframe 的域,则无法从您自己的应用程序读取或修改跨域存储。另一个来源需要接收修改存储的请求。