UMBRACO CMS-创建内容不会重定向到Windows XP上IE6-8上的新内容页面



我今天可能在Umbraco 4.8.1中发现了一个奇怪的问题(这不是早期版本的问题,也没有测试过更新的版本)。

复制步骤

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

此时我希望看到新创建项目的仪表板。但实际发生的是,创建对话框消失了,您仍然留在同一个初始面板上,树也没有更新。如果单击树上的"重新加载节点",则新节点就在其中——您可以单击它,然后获得相同的新内容面板。

使用windowsxp操作系统时,IE6、IE7和IE8会出现此问题。当我使用Windows7时,这不是一个问题,而且看起来工作正常。

我用fiddler检查了两台机器的本地流量。在Windows7版本上,我注意到第二次调用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-redirect-to-new-Content-Page-on-IE6-8-on-Windows-XP

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

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

第133行umbracoclient\Application\UmbracClientManager(版本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行umbracoclient\Application\UmbracclientManager(版本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
}

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

所以,如果你的仪表盘耗时超过200ms,最好的办法就是将其提高到一个合适的值。

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

最新更新