1

使用 dojo 1.8.1...使用 Standby Widget 在服务器忙于处理 AJAX 请求时显示处理。

我有问题地创建了一个 dojox.widget.Standby 对象,它在我第一次 .show() 或 .hide() 时完美运行。我第二次尝试 .show() 它,它出现了,但微调器没有旋转..动画 .gif 麻烦??

单击按钮第二次或更多次时,如何保持微调器旋转?

更新....

我的应用正在做的是在 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>
4

1 回答 1

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

这不仅看起来不错,而且待机微调器将在多次单击按钮时继续旋转。

非常感谢@Frode 为问题提供了解决方案.. 8)

于 2012-12-18T19:30:33.847 回答