使用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>
答案 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)