2010-01-11 3 views
1

jQuery가 Firefox 확장을위한 기본 JavaScript 프레임 워크라는 것을 알고 있지만 Prototype에 익숙하고 간단한 Firefox 확장 기능을 구현해야합니다.Firefox 확장 프로그램에서 Prototype을 어떻게 사용할 수 있습니까?

불행히도 Prototype 메소드를 호출하는 데 문제가 있습니다. 각 메소드 호출은 결과로 no-op가됩니다. 메소드 호출이 발생했음을 나타내는 오류 또는 다른 신호는 없습니다.

var all_divs = $$('div'); 

은 "프로토 타입 : 페이지의 div의가있다하더라도,

<overlay id="liteextension-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 

은 프로토 타입 방법이 호출은 빈 배열을 반환 : 여기

오버레이 코드입니다 .js "파일은 XUL 파일과 동일한 디렉토리에 있습니다.

+0

캐치되지 않는 예외가있을 수 있습니다 사고. 당신은 방화 광을 실행하고 "모든 오류에 대한 중단"을 켜고 스크립트 디버거가 뭐라고하는지 볼 수 있습니까? 어느 쪽이든 try/catch 블록에서 코드 줄을 감싸고 예외를 살펴 보시겠습니까? 'try {var a = $$ ('div')} catch (e) {alert e.message}'와 같은 간단한 것이 도움이 될 수 있습니다. – glomad

답변

2

파이어 폭스 확장 안에 프로토 타입과 jquery와 같은 라이브러리를 사용하는 것은 복잡한 일입니다. 문제는 JQuery가 웹 페이지에서로드 될 때보다는 XUL에서로드 될 때 동일한 컨텍스트에서로드되지 않는다는 것입니다. 따라서 페이지에서 물건을 조작하려고하면 XUL에로드 된 라이브러리는 예상되는 페이지 DOM을 볼 수 없습니다. JQuery (프로토 타입에 대한 확신이 없음)를 사용하면 올바른 컨텍스트를 가리켜 해결할 수 있습니다.

둘째, browser.xul 오버레이의 확장 프로그램 내 라이브러리를 가져 오면 라이브러리에 정의 된 모든 함수와 변수가 다른 네임 스페이스 및 Firefox 코드와 충돌 할 수 있으므로 전역 네임 스페이스에 배치됩니다. 이것은 큰 혼란을 초래할 수 있습니다. 이 포럼 게시물에 자세한 내용이 있습니다

, 그것은 JQuery와에 대해이지만, 같은 문제는 어쩌면 제안 된 솔루션을 당신을 위해 유용 할 수 ... 적용

http://forums.mozillazine.org/viewtopic.php?f=19&t=1460255

관련 문제