gpt4 book ai didi

用于状态消息的 JQuery UI 模式对话框直到最后才会更新

转载 作者:行者123 更新时间:2023-12-01 06:02:12 25 4
gpt4 key购买 nike

原来的问题似乎有两个问题:1) sleep 函数没有正确模拟长时间运行的操作,例如 HTML 请求。2) IE,至少 v8 和 v9 似乎没有像 Firefox 那样正确更新其显示。有人知道强制 IE 处理 UI 更新的方法吗?以下内容在 Firefox 上运行良好,但 IE 不会更新运行计数的显示,直到结束,除非我插入强制暂停的警报。如果有 50 个项目且批量大小为 10,我希望显示运行计数的 HTML 显示 10,20,30,40,50。在 IE 中,它最后从 10 跳到 50,而 Firefox 则正确更新。

while (done == false) {
var url = 'myLongRunningOperation.com/doSomething.html&LastID='+lastPriorIndex;
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
soFar += data.Succeeded + data.Failed;
$('#numCompleted').val(soFar).show();
LastPriorIndex= data.LastID;
if (soFar >= totalNumberOFDocs) {
done = true;
}
},
data: {},
async: false
});
}

我正在尝试使用 JQuery UI 模式对话框作为状态对话框。首先,它应该显示更新消息,然后在长时间运行的操作完成时处理更新消息并将其添加到 HTML。但是,该对话框直到最后才显示,然后显示所有消息。如果我在显示对话框后立即发出警报,它将显示,但消息更新会在操作全部完成后立即显示。我希望我所需要的只是某种检查消息队列功能来使其更新,因为警报会导致对话框显示。或者可能是我模拟日志运行操作的方法导致了模拟 sleep 的问题。

    $(function() {
$("#dialog2").dialog({
bgiframe: false
,height: 140
,modal: true
,autoOpen: false
});

});
function TestModalUpdate2() {
$('#dialog2').dialog("open");
//alert('foo'); //if this alert is present the dialog shows before the doSomething calls execute but wont update till all of them are done
$('#dialog2').show();
var i
for(i = 0; i < 5; i++) {
doSomething($('#dialog2'));
$('#dialog2').show();
}
}

function doSomething(obj1) {
wait(1000);
obj1.html(obj1.html()+"<p>new line</p>")
//alert('this will also cause the dialog to update in between doSomethings')
}
function wait(msecs) {
var start = new Date().getTime();
var cur = start
while(cur - start < msecs) {
cur = new Date().getTime();
}
}
<input type="button" id="Test2" onclick="TestModalUpdate2();" value="Test2"/>

最佳答案

除此之外,我也有同样的问题,但我也使用jqgrid,并使用jqgrid saveRow 函数。我认为这可能是导致问题的原因,但不能 100% 确定。

它甚至会阻止我的对话框中 gif 动画的渲染,所以至少可以说它很有趣:)

我正在做类似的事情

$("#WOTaskList").jqGrid('saveRow', rowArray[rowIndex], onSave, null, null, null, onSaveError)

在我的 onSave 中

$(".waitUIText").html("<span>Saved " + nSavedRows + " of " + nEditeddRows + "</span>");

而且...现在我已经解决了...jqgrid 同步默认阻止保存调用:/

将 ajaxRowOptions: { async: true } 添加到 jqgrid 默认 init 中,并且对话框现在正在按预期更新..

关于用于状态消息的 JQuery UI 模式对话框直到最后才会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10323711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com