Javascript 如何在XUL应用程序中使用progressmeter?

Javascript 如何在XUL应用程序中使用progressmeter?,javascript,firefox,xul,xulrunner,Javascript,Firefox,Xul,Xulrunner,这对极客来说可能是个简单的问题,但至少对我来说不是。我正在从头开始开发一个简单的XUL程序。我使用了wizard标记来简化用户看到的GUI。在向导页面上,我插入了一个进度表,以显示一个名为myFunction()的函数的进度,该函数属于XUL文件中可用的JavaScript。如何根据函数的实际进度正确更新进度表?您是否尝试过使用其“值”属性设置进度表的进度 myProgressmeter.value = 50; 您只需要根据函数的级数增加该值。 请注意,该值应设置在0和myProgressme

这对极客来说可能是个简单的问题,但至少对我来说不是。我正在从头开始开发一个简单的XUL程序。我使用了
wizard
标记来简化用户看到的GUI。在
向导
页面上,我插入了一个
进度表
,以显示一个名为
myFunction()
的函数的进度,该函数属于XUL文件中可用的JavaScript。如何根据函数的实际进度正确更新进度表?

您是否尝试过使用其“值”属性设置进度表的进度

myProgressmeter.value = 50;
您只需要根据函数的级数增加该值。
请注意,该值应设置在0和myProgressmeter之间。max

是的,反向线程工作循环确实有效,但根据文档(此处:)
processNextEvent
如果没有挂起的事件,可能会等待很长时间!犯错误由于
xulrunner
是单线程,因此似乎很少有线程,这导致了巨大的速度减慢。不过摇动鼠标会有所帮助


在进一步的调查中
使用processNextEvent(false)
毫不延迟地工作。

问题是如何工作?我知道value属性,以及如何为其设置值。问题是,我需要知道函数在为value属性设置适当值方面的进展情况。XUL文档上的进度表无法正确更新。这就是问题所在。谢谢你的回复。我真的不理解你的问题,你可以在javascript函数中设置这个值。如果您的函数是在js模块(而不是脚本)中执行的,那么您将无法直接访问XUL文档,并且需要使用观察器,否则它应该可以工作。请注意,可以使用属性值而不是属性值来设置进度。尝试通过属性而不是属性更新元素是一个常见错误…@reverse,我的JavaScript部分是
函数progressBarUpdate(x){var pgs=document.getElementById(“clng_progress_bar”);pgs.value=x;}函数progressBar(){for(var i=0;iXUL一次只处理一个事件。这意味着,只要函数不返回,UI就不会更新。请尝试插入:var thread=Components.classes['@mozilla.org/thread manager;1'].getService(Components.interfaces.nsIThreadManager).currentThread;thread.processNextEvent(true);在两次调用progressBarUpdate之间,它应该可以工作。这会告诉当前线程在进一步处理之前处理下一个事件(用户条目、GUI刷新等)。顺便问一下,(var j=0;j您是否尝试过此解决方案?它解决了您的问题吗?它在我的计算机上工作。。。