Firefox ChromeWorker无法加载脚本

时间:2012-07-22 19:00:25

标签: javascript firefox firefox-addon jsctypes

我有一个要求,我需要与本机代码进行通信以执行某些操作。我通过使用JS-Ctypes取得了成功,事情正在按预期进行。由于我的Web应用程序与本机代码的通信需要一些时间,因此阻止主JS线程因此冻结UI。

因此,我需要创建一个单独的线程,通过与本机代码的通信进行委派,并将结果发布回主线程,这将给用户提供适当的反馈。 Firefox ChromeWorker正是我需要使用的,因为它们是可以访问JS-Ctypes的独立线程。

我的问题是,对于我的生活,我似乎无法使用该方法加载脚本。这就是我目前所拥有的:

main.js

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');                         
Components.utils.import("resource://gre/modules/Services.jsm");

var worker = new ChromeWorker("js/fpman/myworker.js");
worker.onmessage = function(e){
      console.log(e.data);
};

worker.postMessage('start');

myworker.js

self.onmessage = function(e){
   var sum = 1 + 1;
   postMessage("Sum is " + sum);
};

当代码在主JS中运行时,我在firebug控制台上出现此错误

Failed to load script: http://localhost:8080/myapp/js/fpman/myworker.js (nsresult = 0x805303f4)

注意,当我使用正常的工作线程时,即

var worker = new Worker("js/fpman/myworker.js");

js文件(myworker.js)加载正常,我得到了预期的结果,但当然这不足以满足我的需求,因为普通工作者无法访问JS-Ctypes。因此,问题在于如何创建ChromeWorker。有人可以请教我如何从应用程序中适当地实例化和使用ChromeWorker对象。我在扩展程序中看到了很多关于ChromeWorker使用情况的参考,但这不是我想要的,我想在我的网络应用程序中使用ChromeWorker。

感谢。

1 个答案:

答案 0 :(得分:1)

该特定错误是NS_ERROR_DOM_BAD_URI

我不相信你在做什么会起作用,我知道它在Firefox中不会很快起作用,因为enablePrivilege完全消失了。