使用 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>