2012-07-22 1 views
1

일부 작업을 수행하기 위해 기본 코드와 통신해야하는 요구 사항이 있습니다. 나는 JS-Ctypes를 사용하여 성공했으며, 예상대로 상황이 바뀌고있다. 내 웹 응용 프로그램에서 원시 코드로 통신하는 데 시간이 걸리므로 UI가 정지하는 메인 JS 스레드가 차단됩니다.Firefox ChromeWorker가 스크립트를로드하지 않습니다.

따라서 네이티브 코드와의 통신으로 위임 된 별도의 스레드를 만들고 사용자에게 적절한 피드백을주는 기본 스레드에 결과를 게시해야합니다. 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에서 실행하면, 내가 불을 지르고 콘솔에서이 오류가

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를 사용하고 싶습니다.

감사합니다. 특정 오류가 NS_ERROR_DOM_BAD_URI

난 당신이 의지 작업을하고있는 것을 생각하지 않는다, 나는 enablePrivilege 완전히 떨어져 가고 있기 때문에 파이어 폭스에서 곧 작동하지 않습니다 알고있는 것을

답변

1

.

+0

마이크, ChromeWorker가 동일한 스크립트를로드하지 못하는 동안 일반 Worker 객체가 스크립트를로드 할 수있는 이유는 무엇입니까? 두 번째 댓글에 대해 앞으로 Google 웹 앱에서 권한있는 작업에 어떻게 액세스 할 예정입니까? – mackelkin

+0

> ChromeWorker가 동일한 스크립트를로드하지 못하는 동안 일반 Worker 객체가 스크립트를로드 할 수있는 이유는 무엇입니까? 음, 외부 URL을 크롬 파일로로드하여 크롬 권한을 부여하려고합니다. 나는 그것이 가능하다고 생각하지 않는다. > 앞으로 웹 응용 프로그램에서 권한이 부여 된 작업에 액세스하는 방법 추가 기능을 작성하고 거기에 기능을 추가하고 웹 응용 프로그램에서 호출해야합니다. 모든 사용자는 부가 기능을 설치해야합니다 (이상하지는 않습니다, 알고 있습니다). 자유롭게 의견을 말하십시오. - https://bugzilla.mozilla.org/show_bug.cgi?id=757046 –

+0

나는 애드온 (add-on)과 같은 것을하려고합니다. (우리는 FireFox 25에 있습니다. 평균 시간),로드 할 파일의 올바른 경로와 함께 "스크립트로드 실패 : file : /// C : /"등이 나타납니다. –