2014-04-13 4 views

답변

1

불행히도 <findbar> 위젯은 실제로 브라우저 요소와 함께 사용하기위한 것입니다. 은 필요한 브라우저 API를 위장한 경우 다른 데이터와 함께 사용할 수 있지만 앞으로는 계속 작동한다는 보장은 없습니다. 특히 문제의 API는 Adblock Plus 또는 Stylish와 같은 API를 구현 한 모든 확장을 깨뜨린 Firefox 26에서 동기식에서 비동기식으로 변경되었습니다. 에서

implementation of the <findbar> widget 당신이 현재 브라우저에서 무엇을 기대 볼 수 있습니다

Components.utils.import("resource://gre/modules/Services.jsm"); 

var fakeBrowser = { 
    finder: new Finder(), 
    _lastSearchString: "", 
    _lastSearchHighlight: false, 
    currentURI: Services.io.newURI("http://example.com/"), 
    contentWindow: null, 
    addEventListener: function() {} 
    removeEventListener: function() {}, 
}; 

이 가짜 브라우저가 findbar.browser property에 할당 할 수 있습니다. 여기서 중요한 부분은 finder 속성이며 일반적으로 Finder object defined by Finder.jsm입니다. 물론 동일한 API를 제공하는 객체를 구현하고 싶을 것이다.

+0

감사합니다. Finder.jsm을 가지고 놀기 시작했고 listbox에 대해 제안한 것처럼 fakeBrowser를 사용하여 처음부터 시작하는 것이 더 낫다고 생각합니다. 아마도 더 나은 호환성을 위해 아마도 미래에 변경 될 경우를 대비하여 findbar.xml xbl의 사본을 사용해야합니다. – vanowm

+0

@vanowm : 그곳에갔습니다. 단점은 브라우저에서와 같은 방식으로 findbar 위젯의 스타일을 지정할 수 없다는 것입니다. 스타일 업을 브라우저로 남겨 둘 수 있지만 새로운 findbar 버전을위한 스타일이 자신에게 적용되는 경우 다시 파손될 위험이 있습니다. 자신 만의 findbar 스타일 사본을 사용할 수는 있지만 브라우저는 실제로 각 운영체제 (물론 사용자 정의 테마)마다 다른 findbar 스타일을 가지고 있습니다. 또한 확장명에 세 가지 스타일 파일을 모두 포함하더라도 몇 가지 브라우저를 릴리스 한 후에는 찾기 막대가 오래된 것으로 표시 될 수 있습니다. –