Firefox ChromeWorker未加载脚本

Firefox ChromeWorker not loading script

本文关键字:脚本 加载 ChromeWorker Firefox      更新时间:2023-12-23

我有一个需求,需要与本机代码通信以执行一些操作。我已经成功地使用了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的参考,但这不是我想要的,我想在我的web应用程序中使用ChromeWorker。

谢谢。

该特定错误为NS_error_DOM_BAD_URI

我不相信你所做的会奏效,我知道它在Firefox中不会很快奏效,因为enablePrivilege正在彻底消失。