문제

5 분마다마다 새 게시물에 대한 RSS 피드를 점검하고 알림 ()이 표시됩니다. 문제는 사용자가 여러 개의 Wind 어쨌든 한 번에 하나의 "뇌"만 실행해야합니까?

미리 감사드립니다!

도움이 되었습니까?

해결책

"JavaScript 공유 코드 모듈"또는 JSMS라는 것을 찾으십시오.

기본 문서는 여기에 있습니다.

https://developer.mozilla.org/en/using_javaScript_code_modules

공유 메모리가 필요한 부속의 각 .js 파일은 다음 행으로 열립니다.

Components.utils.import("resource://xxxxxxxx/modules/[yourFilenameHere].jsm", com.myFirefoxAddon.shared);

위의 줄은 [Yourfilenamehere] .jsm을 열고로드합니다. 수출 (아래 참조) com.myfirefoxaddon.shared 객체로의 함수 및 변수. 로드 된 해당 객체의 각 인스턴스는 메모리의 동일한 인스턴스를 가리 킵니다.

과거의 중재를 만들기 위해 애드온의 희망을 갖고 싶다면 모든 코드를 com.myfirefoxaddon에 작성해야합니다. 글로벌 네임 스페이스를 존중하십시오

JSM의 가장 큰 경고는 코드의 나머지 부분에 사용할 수 있도록 원하는 각 기능을 수동으로 수동으로 내보내야한다는 것입니다. "공개"지원 ... 어쨌든, JSM 파일 어딘가에 내보내기 _symbols 배열을 만들고 다음과 같이 내보낼 각 함수 또는 객체를 이름을 지정해야합니다.

var EXPORTED_SYMBOLS = [
    /* CONSTANTS */
    "SERVER_DEBUG",
    "SERVER_RELEASE",

    "LIST_COUNTRIES",
    "LIST_TERRITORIES_NOEX",

    /* GLOBAL VARIABLES */
    /* note: primitive type variables need to be stored in the globals object */
    "urlTable",
    "globals",

    /* INTERFACES */
    "iStrSet",

    /* FUNCTIONS */
    "globalStartup",

    /* OBJECTS */
    "thinger",
    "myObject"

]

다른 팁

편집 코드는 모든 창으로 여전히 가져 오기 때문에 모듈은이 문제에 대한 올바른 솔루션이 아닙니다. 설정하는 청취자/타이머는 모든 창에서 실행되므로 모듈은이 문제에 대한 올바른 솔루션이 아닙니다. 이를 위해 모듈을 사용하는 데주의해야합니다. 모든 타이머/콜백은 모듈 코드에서 설정되어야하며 모듈에 정의 된 관찰자 객체를 사용하지 말고 모듈의 창에 대한 참조를 사용해서는 안됩니다. .

이것을하는 올바른 방법은입니다 내가 선호하는 XPCOM 구성 요소 (JS)를 작성합니다. 다소 복잡합니다. 그렇습니다. 그리고 나는 그것을하는 방법을 설명하는 편리한 링크가 없습니다. 한 가지 : XPComutils를 사용하여 구현하는 것이 더 쉽고 오래된 문서는 많은 보일러 플레이트 코드를 던질 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top