dojo待机小部件不旋转

时间:2012-12-18 15:41:45

标签: javascript dojo

使用dojo 1.8.1 ...使用待机窗口小部件在服务器忙于执行AJAX请求时显示处理。

我创建了一个有问题的dojox.widget.Standby对象,它在我第一次使用.show()或.hide()时效果很好。我第二次尝试.show()它,它出现但旋转器没有旋转..动画.gif麻烦??

如果单击按钮一次或多次,如何保持微调器旋转?

... UPDATE

我的应用正在做的是在dojo DataGrid对象中显示数据供用户选择。选择是通过AJAX请求发送给服务器,服务器返回用户可以下载或打开的文件名(.csv文件)。我使用以下javascript在客户端创建打开/保存对话框:

  window.location.assign(path); //Open save/open dialog

如果我注释掉这一行,那么每次点击按钮时微调器都会工作。

第二次更新....

添加了隐藏的iframe HTML:

 <iframe src="" style="display: none;" id="ifr"></iframe>

当我从服务器收到可下载文件的路径时,我使用它来弹出对话框并下载:

 window.document.getElementById("ifr").src=path;  //Where path is location of downloadable file

现在,对于可下载的文件对话框来说,一切看起来都很顺畅,而且按钮上的更多点击让旋转器保持旋转......

感谢@Frode提供此问题的答案......

require(["dojox/widget/Standby", "dojo/domReady!"],
function(Standby) {
  var standby = new Standby({
      id: "standbyObj",
      target: "standby",
      color: "transparent",
      zindex: "auto",
      duration: "1000"
  });
  window.document.body.appendChild(standby.domNode);
  standby.startup();
});

稍后点击按钮时:

var standObj = dijit.byId("standbyObj");
if (standObj) {
  standObj.show();
}

...服务器处理AJAX请求....

处理完成后:

var standObj = dijit.byId("standbyObj");
if (standObj) {
  standObj.hide();
}

这一切都很好但是如果再次点击按钮,则微调器显示但不旋转。

其他东西:

的CSS:

 #standby
 {
   position: absolute;
   top: 50%;
   left:50%;
   width:32px;
   height:32px;
   margin-top: -16px;
   margin-left: -16px;
}

HTML:

<div id="standby"></div>

1 个答案:

答案 0 :(得分:1)

此问题的解决方案如下:

在隐形iframe中创建:

 <iframe src="" style="display: none;" id="ifr"></iframe>

当服务器使用可下载文件的路径回答AJAX请求时,使用以下javascript在客户端Web浏览器中显示打开/保存对话框:

 window.document.getElementById("ifr").src=path;  //Where path is location of downloadable file

这不仅看起来不错,而且Standby微调器会在多次点击按钮时继续旋转。

感谢@Frode提供问题的解决方案.. 8)