XUL ブラウザー タグをいくつかのメソッドで拡張したいのですが、CSS でリンクを作成するたびに、タグからメソッドが削除されるだけです。これが URI が間違っているためなのか、XBL ファイルが間違っているためなのかはわかりません。最も単純な XBL でさえこれを行うため、URI でなければなりません。バインドを chrome/content の「bindings」ディレクトリに配置したいと考えていました。
問題のブラウザータグの loadURI メソッドを呼び出す JS がいくつかありますが、これは既に機能していますが、バインディングをそれにリンクすると、そのようなメソッドがないことを示すエラーが発生します。CSSバインディングを削除すると、再び機能します。
#bwindow{
-moz-binding: url("chrome://nameofmyapp/content/bindings/browser.xbl#sbrowser");
}
私が最初に行った XBL はもっと複雑ですが、うまくいかなかったときはシンプルなものを使いました。
<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl"
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<binding id="sbrowser" extends="xul:browser">
<content><xul:label value="blah" /></content>
</binding>
</bindings>
以下は私のクロムマニフェストです。これらはうまくいくようです。肌は間違いなくそうです。
content nameofmyapp content/
skin nameofmyapp default/1.0 skin/default/
ブラウザタグはこんな感じ
<browser onload="browserload()" id="bwindow" type="content" src="about:blank" flex="1"/>
ここでも、CSS を使用して XBL を #bwindow にリンクするまで、すべて正常に動作します。