私は Firefox の拡張機能を開発していて、それについて助けが必要です。
私の拡張機能はオーバーレイされ、XBL バインディングを使用して新しい項目をユーザー インターフェイスに追加します。
この拡張機能をブートストラップ タイプに変換することは可能ですか?
検索バーにボタンを追加しようとしています。
XBL を使用して findbar インターフェイスをオーバーライドしました。
ブートストラップから始めるために、style.css に "findbar{ -moz-binding:... }" ルールを含め、このシートを startup() に登録します
(nsIStyleSheetService.loadAndRegisterSheet() を使用)。
この場合、ボタンは再起動せずにバーに追加されます。
しかし、アドオンを無効にするか削除すると、ボタンが消えるようにブラウザを再起動する必要があります。
以下を使用して、bootstrap.js の shutdown() で削除しようとしました。
var fb=window.gFindBar.getElement("findbar-container")
var but=window.gFindBar.getElement("the-button")
fb.removeChild(but)
しかし、これはそれを削除しませんでした。私はコードをデバッグし、すべての要素 (fb、しかし) が見つかって削除されましたが、私が持っていた、または開いたタブの実際の検索バーには触れませんでした。
そこで、XBL を検索バーにバインドするスタイルシートの登録を解除しようとしました。今回は、現在のタブで検索バーが開かなかっただけです。
しかし、新しいタブでは、ボタンなしで開きました(少し良くなりました...)。
また、「this.browser is undefined」という奇妙なエラーのために、開いているタブで検索バーが開かないこともわかりました。
このエラーは、コードが _unpdateCaseSensitivity() を実行しようとしたが、"gFindBar._browser" プロパティを取得できなかった findbar.xml 行 533 を示していました。
おそらく、このプロパティがブラウザの開始時から元の findbar オブジェクトにロードされていなかったことが原因です (オーバーライドされた findbar オブジェクトによって使用されていました)...
これが私がこだわったポイントです...
そして問題は次
のとおりです。再起動せずにボタンを削除して、検索バーが開くようにするにはどうすればよいですか?