我在使用javascript时遇到了一些麻烦。 我试图用NW.JS做一个桌面应用程序。我有一个.xml文件,我在我的应用程序中拖放然后它运行一个函数来读取XML做一些东西并在.csv中保存一个新文件 它的工作正常,但现在我可以在功能期间更新进度条...
我尝试setInterval
和setTimeOut()
,但我总是得到相同的结果:在功能完成之前没有任何附加内容。
这是我的代码
//Same as $(document).ready();
function ready(fn) {
if (document.readyState != 'loading'){
fn();
} else {
document.addEventListener('DOMContentLoaded', fn);
}
}
//When the page has loaded, run this code
ready(function(){
// prevent default behavior from changing page on dropped file
window.ondragover = function(e) { e.preventDefault(); return false };
// NOTE: ondrop events WILL NOT WORK if you do not "preventDefault" in the ondragover event!!
window.ondrop = function(e) { e.preventDefault(); return false };
var holder = document.getElementById('holder');
holder.ondragover = function () { this.className = 'hover'; return false; };
holder.ondragleave = function () { this.className = ''; return false; };
holder.ondrop = function (e) {
e.preventDefault();
var file = e.dataTransfer.files[0],
reader = new FileReader();
reader.onload = function (event) {
########I'm doing stuff here to convert file and i want to update the progressbar##########
};
reader.readAsText(file);
//reader.readAsDataURL(file);
return false;
};
});
感谢您的帮助
最好的问候,
答案 0 :(得分:0)
在NWJS和Electron中尝试相同的代码后,我发现问题出在“主要” Chromium进程中任何长时间运行的进程都阻止了渲染。解决方案是产生一个通过Node的IPC进行通信的子进程。在this answer中有更多详细信息。