Javascript 无法访问HTA工作进程内的ActiveXObject
我有一个IE11HTA,它从用户在运行时选择的各种Excel电子表格中提取数据。电子表格有几个类别,每个类别都有几个示例(日报、周报、月报等),因此用户必须在运行时从每个类别中选择一个电子表格。这是工作得很好,但它的速度比我想要的慢,因为它使用的是块,单线程逻辑,所以当HTA打开一个来自特定类别的电子表格并提取数据时,HTA处于搁置状态 我一直在尝试切换到一个多线程模型,使用web workers打开电子表格,这样HTA就不会被阻止,但我无法这样做,因为worker文件似乎无法访问ActiveXObject 例如,下面是一个经过修剪的主文件:Javascript 无法访问HTA工作进程内的ActiveXObject,javascript,excel,hta,activexobject,Javascript,Excel,Hta,Activexobject,我有一个IE11HTA,它从用户在运行时选择的各种Excel电子表格中提取数据。电子表格有几个类别,每个类别都有几个示例(日报、周报、月报等),因此用户必须在运行时从每个类别中选择一个电子表格。这是工作得很好,但它的速度比我想要的慢,因为它使用的是块,单线程逻辑,所以当HTA打开一个来自特定类别的电子表格并提取数据时,HTA处于搁置状态 我一直在尝试切换到一个多线程模型,使用web workers打开电子表格,这样HTA就不会被阻止,但我无法这样做,因为worker文件似乎无法访问ActiveX
function main () {
var output = document.getElementById ('output');
var myWorker = new Worker ('worker.js');
sendOut ('Calling worker.');
myWorker.postMessage ('');
myWorker.onmessage = function (m) {
sendOut (m.data);
}
}
function sendOut (m) {
output.innerHTML += '<br /> ' + (m);
}
window.callWorker = main;
如果我注释掉worker.js文件的第一行,HTA将按预期运行,消息“Calling worker.”和“worker responding.”将出现在“output”元素中。但是,如果它没有注释,我会收到错误消息“Automation server无法创建对象”
由此看来,工作文件似乎无法访问ActiveXObject,但我找不到任何东西来证实或解释这一点
我还尝试在主文件中创建ActiveXObject并将其作为参数传递,如下所示:
var fso = new ActiveXObject ('Scripting.FileSystemObject')
onmessage = function (m) {
postMessage ('Worker responding.');
}
function main () {
var fso = new ActiveXObject ('Scripting.FileSystemObject')
var output = document.getElementById ('output');
var myWorker = new Worker ('worker1.js');
sendOut ('Calling worker.');
myWorker.postMessage (fso);
myWorker.onmessage = function (m) {
sendOut (m.data);
}
}
function sendOut (m) {
output.innerHTML += '<br /> ' + (m);
}
window.callWorker = main;
函数主(){
var fso=new ActiveXObject('Scripting.FileSystemObject')
var output=document.getElementById('output');
var myWorker=newworker('worker1.js');
发出(“呼叫工人”);
myWorker.postMessage(fso);
myWorker.onmessage=函数(m){
发送(m.data);
}
}
函数输出(m){
output.innerHTML+='
'+(m);
}
window.callWorker=main;
但现在我只得到了错误“DataCloneError”。我还没有找到任何关于这方面的参考资料,但看起来我试图做的是不可能的。有人能证实这一点吗,或者你知道解决办法吗?不幸的是,网络工作者不允许使用HTA拥有的扩展权限。这就解释了这一点。谢谢