由于 Safari 有一个跨站点本地存储策略,不能将同一站点的子域名 sub.domain.com 的本地存储传递给 domain.com。 解决方法是使用不同的localStorage键名,并使用postMessage来处理跨浏览器通信,例如:
在sub.domain.com中:
//设置数据 localStorage.setItem('dataKey', 'value');
//postmessage发送 window.parent.postMessage('dataKey', '*');
在domain.com中:
//监听postmessage消息 window.addEventListener('message', function(event) { if (event.origin !== 'http://sub.domain.com') return; //获取数据 var data = localStorage.getItem(event.data); }, false);
这样可以在两个站点之间传递数据并维护LocalStorage分别存储的状态。