我正在动态地跟踪用户在网络上的方式。最后5个访问过的页面显示为Breadcrumb导航,如下所示:
DogDatabase>> DogName>>用户名>> KennelName>> DogName>>等....
它动态生成的访问页面路径...这个脚本是用PHP编写的,效果非常好。
现在我正在使用SESSION将访问过的页面数组移动到另一个页面。还尝试了JS中的LocalStorage。
我的问题是,如果用户的网络窗口更多。该数组是为我的网站的所有实例(窗口)共享给1个用户。
所以它看起来像这样:
w1 - widnow 1
w2 - window 2
w1.DogDatabase>> w1.DogName>> w2.UserName>> w1.KennelName>> w2.DogName
但我希望这样:
w1.DogDatabase>> w1.DogName>> w1.KennelName
w2.UserName>> w2.DogName
我的问题是: 如何将访问过的页面数组移动到另一个页面,以便为PHP或JS中的1个用户特定于我的Web的每个窗口?
谢谢你, 安德鲁
编辑 - !已解决! :
所以我已经完成了痕迹导航:)
我有这样的多维数组:
array (
[0] : (nameOfPage,pageURL)
[1] : (nameOfPage,pageURL)
etc..
)
我使用sessionStorage将此数组转换为另一个页面。令人敬畏的是,sessionStorage对于Web的每个窗口/选项卡都是唯一的,因此我不需要识别窗口/选项卡。关闭窗口/选项卡后,将清除存储空间。下一个好功能是当用户单击BACK按钮时,sessionStorage将返回到该页面上的hystorical值。当页面从浏览器wia关闭pannels函数重新打开时,sharedStorage也是当前值。太棒了。
将数组保存到sessionStorage:
sessionStorage.setItem(key, JSON.stringify(myarray));
从sessionStorage读取数组:
var myarray = JSON.parse(sessionStorage.getItem(key));
变量键是名称:
var key = 'navigation';
答案 0 :(得分:0)
sessionStorage是最佳解决方案,我建议您使用a session storage management library like this one。这不仅可以帮助您存储简单的文本/数字数据,还可以存储像这样的整个数组。
$.setSession('key','value');
$.setSession('array1',[1,2,3,4,5]);
$.setSession('array2',Array(1,2,3,4,5));
要获取此数据,您只需使用getSession函数
$.getSession('key'); // returns 'value'
$.getSession('array1'); // returns [1,2,3,4,5]
答案 1 :(得分:-1)
谢谢你的提示亚当。它不是完全解决方案,但它是正确的方式。
我将使用sessionStorage而不是localStorage。 SessionStorage是每个窗口/选项卡的separetd,当窗口/选项卡关闭时,它会被清除。
所以我不需要检测窗口(不需要生成窗口/标签的id)并且不需要关心清除存储。 LocalStorage是所有窗口/选项卡共享的,需要手动清除(关闭浏览器不会清除localStorage)。