可能的dijit.Tree Cookie问题(SaveStateCookie)

因此,我们的应用程序设置为与树的标准左框架一样,右框架具有主要内容(通过单击树加载)。 我们的网络应用程序在Firefox的主框架中不一致地显示空白页面。不一致的意思是,我的意思是每天为少数人,很少为别人,绝不是多数人。一旦我们得到这个,通过我们的树进入任何其他页面的结果是一个空白页面。我们发现删除“aTreeSaveStateCookie”可恢复正常操作。 “aTree”是我们部门的名称。我在dijit/Tree.js中找到了“SaveStateCookie”字符串。 这也发生在IE中,除了我会得到一个浏览器的错误页面,我现在不记得。然后,我会删除我可以找到的唯一cookie(不知道如何在IE中执行Firefox步骤) 任何想法为什么会发生? 谢谢 Dojo 1.3到http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js
Firefox 3.1x
IE 8
Windows XP
就我而言,我不记得私人数据周围的浏览器设置不断变化。

已邀请:

sit_et

赞同来自:

请检查响应代码是否为413(413 =请求实体太大),通常在用于存储树扩展状态(aTreeSaveStateCookie)的cookie超过(s)最大请求大小时你的服务器 您可以尝试增加最大请求大小(按照特定Web应用程序服务器的说明进行操作),或者至少在遇到413错误代码时显示“请清除浏览器缓存”等有意义的错误消息

but

赞同来自:

如果persist属性设置为真值,则dijit.Tree将保持其状态以记忆哪些节点已扩展,并在页面重新加载后展开它们。如果您需要在非常大的数据结构中保持树状态,则建议覆盖Tree以使用localStorage而不是dojo.cookie。 这是Dojo v.1.9,但对非AMD 1.3版可以做类似的更改

_saveExpandedNodes: function(){
   if(this.persist && this.cookieName){
      var ary = [];
      for(var id in this._openedNodes){
         ary.push(id);
      }
      // Was:
      // cookie(this.cookieName, ary.join(","), {expires: 365});
      localStorage.setItem(this.cookieName, ary.join(","));
   }
},
和:
_initState: function(){
   // summary:
   //    Load in which nodes should be opened automatically
   this._openedNodes = {};
   if(this.persist && this.cookieName){
      // Was:
      // var oreo = cookie(this.cookieName);
      var oreo = localStorage.getItem(this.cookieName);
      if(oreo){
         array.forEach(oreo.split(','), function(item){
            this._openedNodes[item] = true;
         }, this);
      }
   }
},

要回复问题请先登录注册