使用 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>
最佳答案
该问题的解决方案如下:
在不可见的 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)
关于javascript - dojo 待机小部件不旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936438/