0

我今天可能在 Umbraco 4.8.1 中发现了一个奇怪的问题(这不是早期版本的问题,并且尚未测试过较新的版本)。

重现步骤

  1. 在 Windows XP 上打开 Umbraco 管理系统 使用任何基于 Internet Explorer 的浏览器 - 这不是 Chrome、Firefox 或 Safari 的问题
  2. 登录管理系统。
  3. 导航到内容部分。
  4. 单击内容并创建新的内容项并选择文档类型。
  5. 单击创建。

在这一点上,我希望看到新创建的项目的仪表板。但实际发生的是创建对话框消失了,您仍然在同一个初始仪表板上,并且树没有更新。如果您单击树上的重新加载节点,那么新节点就在那里 - 您可以单击它,然后获得相同的新内容仪表板。

使用 windows xp 操作系统时,IE6、IE7 和 IE8 会出现此问题。当我使用 Windows 7 时,这不是问题,而且似乎工作正常。

我使用提琴手检查两台机器上的本地流量。在 Windows 7 版本上,我注意到对 create.aspx 的第二次调用?它重新调整了 200,然后对 editContent.aspx 等进行了后续调用 - 在 Windows XP 上发生了第二次调用,但后续的 editContent.aspx 永远不会被调用。它似乎确实创建了节点,但随后无法重定向或调用页面。

任何人都可以帮忙吗?建议是怎么回事?我尝试在没有太多帮助的情况下查看论坛和谷歌?

请不要回复告诉您的客户不要使用 Windows XP。 请不要回复你会在 umbraco 论坛上获得更好的运气 - 我已经在那里发布了:http: //our.umbraco.org/forum/using/ui-questions/36841-Create-Content-does-not-重定向到新内容页面在 IE6-8-on-Windows-XP

4

1 回答 1

0

经过一番调查,我找到了造成这种情况的原因。Umbraco 使用 javascript 文件 UmbracoClientManager.js 和一个名为 contentFrame 的函数 - 重定向主仪表板框架。

在 4.7.1 和以前的版本中,没有在重定向周围添加 setTimeout 闭包:

第 133 行 umbraco_client\Application\UmbracoClientManager(版本 4.8.1+)

var self = this;
window.setTimeout(function(){
  if (typeof self.mainWindow().right != "undefined") {
    self.mainWindow().right.location.href = strLocation;
  }
  else {
    self.mainWindow().location.href = strLocation; //set the current windows location  
          if the right frame doesn't exist int he current context
  }
},200);

第 133 行 umbraco_client\Application\UmbracoClientManager(版本 4.7.1)——实际上是上面相同的代码

if (typeof this.mainWindow().right != "undefined") {
 this.mainWindow().right.location.href = strLocation;
  }
else {
  this.mainWindow().location.href = strLocation; //set the current windows location if the right frame doesn't exist int he current context
}

因此,如果您重定向到的仪表板页面花费的时间超过 200 毫秒,那么它将不会显示,并且 javascript 函数将在 4.8.1 或更高版本中超时

因此,如果您的仪表板时间超过 200 毫秒,那么最好的办法就是将其提高到合适的值。

我在这里记录了这一点:http: //issues.umbraco.org/issue/U4-1311

于 2012-12-11T20:57:49.447 回答