$cache[$key] = empty($arr) ? NULL : $arr; return $cache[$key]; } // 门户 获取需要在频道显示的栏目主题数据 function portal_channel_thread($fid) { global $forumlist; if (empty($fid)) return NULL; $orderby = array('tid' => 1); $page = 1; // 遍历所有在频道显示内容的栏目 $category_forumlist = channel_category($fid); $arrlist = array(); $forum_tids = array(); $tidlist = array(); if ($category_forumlist) { foreach ($category_forumlist as &$_forum) { // 频道显示数据 $arrlist['list'][$_forum['fid']] = array( 'fid' => $_forum['fid'], 'name' => $_forum['name'], 'rank' => $_forum['rank'], 'type' => $_forum['type'], 'url' => $_forum['url'], 'channel_new' => $_forum['channel_new'], ); $forum_thread = thread_tid__find(array('fid' => $_forum['fid']), $orderby, $page, $_forum['channel_new'], 'tid', array('tid')); // 最新信息按栏目分组 foreach ($forum_thread as $key => $_thread) { $forum_tids[$key] = $_thread; } unset($forum_thread); } $tidlist += $forum_tids; } unset($category_forumlist); // 获取属性对应的tid集合 list($flaglist, $flagtids) = flag_thread_by_fid($fid); empty($flagtids) || $tidlist += $flagtids; unset($flagtids); // 频道置顶 $stickylist = sticky_list_thread($fid); empty($stickylist) || $tidlist += $stickylist; // 在这之前合并所有二维数组 tid值为键/array('tid值' => tid值) $tidarr = arrlist_values($tidlist, 'tid'); // 在这之前使用$tidarr = array_merge($tidarr, $arr)前合并所有一维数组 tid/array(1,2,3) if (empty($tidarr)) { $arrlist['list'] = isset($arrlist['list']) ? array_multisort_key($arrlist['list'], 'rank', FALSE, 'fid') : array(); return $arrlist; } $tidarr = array_unique($tidarr); $pagesize = count($tidarr); // 遍历获取的所有tid主题 $threadlist = well_thread_find_asc($tidarr, $pagesize); // 遍历时为升序,翻转为降序 $threadlist = array_reverse($threadlist); foreach ($threadlist as &$_thread) { // 各栏目最新内容 isset($forum_tids[$_thread['tid']]) AND $arrlist['list'][$_thread['fid']]['news'][$_thread['tid']] = $_thread; // 全站置顶内容 isset($stickylist[$_thread['tid']]) AND $arrlist['sticky'][$_thread['tid']] = $_thread; // 首页属性主题 if (!empty($flaglist)) { foreach ($flaglist as $key => $val) { if (isset($val['tids']) && in_array($_thread['tid'], $val['tids'])) { $arrlist['flaglist'][$key][array_search($_thread['tid'], $val['tids'])] = $_thread; ksort($arrlist['flaglist'][$key]); $arrlist['flag'][$_thread['tid']] = $_thread; } } } } unset($threadlist); if (isset($arrlist['sticky'])) { $i = 0; foreach ($arrlist['sticky'] as &$val) { ++$i; $val['i'] = $i; } } if (isset($arrlist['flag'])) { $i = 0; foreach ($arrlist['flag'] as &$val) { ++$i; $val['i'] = $i; } } if (isset($arrlist['flaglist'])) { foreach ($arrlist['flaglist'] as &$val) { $i = 0; foreach ($val as &$v) { ++$i; $v['i'] = $i; } } } isset($arrlist['list']) AND $arrlist['list'] = array_multisort_key($arrlist['list'], 'rank', FALSE, 'fid'); return $arrlist; } ?>javascript - Multiple Tab LocalStorage single user Use case - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Multiple Tab LocalStorage single user Use case - Stack Overflow

programmeradmin0浏览0评论

I currently have a SaaS B2B product, I'd love to show for the sake of example, if it weren't behind a VPN. But the case is, Its built on top of Zend Framework it is using Zend's session handling. That said my users recently decided that with recent improvements to various ends of the UI that they want to use the Service across multiple tabs at once, which isn't exactly currently supported, but in the name of wanting to keep on improving. I have to meet demands. That said. With this one piece of the service I have been managing data with cookies, since the page can be reloaded, and the UI re-rendered respectively to match the reloaded UI (the reload is triggered by content in an iFrame, since we can't communicate parent child from within the frame.

However now that my users are insisting on doing the same action across multiple tabs trying to save time, this breaks the UI since the cookies are not in any way shape or form tagged with an ID, from which I wouldn't even know how to imply that since I can't necessarily track tabs. So With all this I figured i'd give localstorage a go. However I am still not sure how to handle a single user on multiple tabs to prevent UI data being used on different tabs, more so if the page gets refreshed at a given time which could maybe lose data in localstorage?

So what I am trying to figure out all in all. Is how to manage this single user across one or more tabs without one tabs data interfering with the other tabs data, since the actions and ui are all contained within the same domain. (Does this clarify anything better?)

I currently have a SaaS B2B product, I'd love to show for the sake of example, if it weren't behind a VPN. But the case is, Its built on top of Zend Framework it is using Zend's session handling. That said my users recently decided that with recent improvements to various ends of the UI that they want to use the Service across multiple tabs at once, which isn't exactly currently supported, but in the name of wanting to keep on improving. I have to meet demands. That said. With this one piece of the service I have been managing data with cookies, since the page can be reloaded, and the UI re-rendered respectively to match the reloaded UI (the reload is triggered by content in an iFrame, since we can't communicate parent child from within the frame.

However now that my users are insisting on doing the same action across multiple tabs trying to save time, this breaks the UI since the cookies are not in any way shape or form tagged with an ID, from which I wouldn't even know how to imply that since I can't necessarily track tabs. So With all this I figured i'd give localstorage a go. However I am still not sure how to handle a single user on multiple tabs to prevent UI data being used on different tabs, more so if the page gets refreshed at a given time which could maybe lose data in localstorage?

So what I am trying to figure out all in all. Is how to manage this single user across one or more tabs without one tabs data interfering with the other tabs data, since the actions and ui are all contained within the same domain. (Does this clarify anything better?)

Share Improve this question edited Mar 2, 2015 at 14:43 chris asked Mar 2, 2015 at 14:26 chrischris 36.9k53 gold badges147 silver badges256 bronze badges 2
  • Question needs more clarity as to what expectations are for various window states. There are events associated with localStorage that may help you ... for example html5demos.com/storage-events – charlietfl Commented Mar 2, 2015 at 14:35
  • Like @Ewald Stiegler answered, sessionStorage would suit your situation better. – Martin Commented Mar 2, 2015 at 14:38
Add a comment  | 

1 Answer 1

Reset to default 16

Yes, you can use localStorage to store data for your web app. Also, have a look at sessionStorage which is window/tab specific and stores data per session.

Read more here:

HTML5 Web Storage

Scope of sessionStorage and localStorage

发布评论

评论列表(0)

  1. 暂无评论