我今天可能在Umbraco 4.8.1中发现了一个奇怪的问题(这不是早期版本的问题,也没有测试过更新的版本)。
重现的步骤
此时我希望能够看到新创建的项目的仪表板。但实际发生的是创建对话框消失,您仍然在同一个初始仪表板上,树不会更新。如果单击树上的“重新加载节点”,则新节点就在那里 - 您可以单击它,然后获取相同的新内容仪表板。
使用Windows XP操作系统时,IE6,IE7和IE8会出现此问题。当我使用Windows 7时,这不是问题,这似乎工作正常。
我用fiddler检查两台机器上的本地流量。在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-redirect-to-new-Content-Page-on-IE6-8-on-Windows-XP
答案 0 :(得分: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毫秒,那么它将无法显示,并且版本4.8.1或更高版本中的javascript函数将超时
如果您的仪表板耗时超过200毫秒,那么最好的办法就是将其提升到合适的值。