isAttributeHandler: false,
getScriptingInterfaces: function (count)
{
var interfaces = [Components.interfaces.nsIDOMElement,
Components.interfaces.nsIDOM3Node,
Components.interfaces.nsIDOMEventTarget];
count.value = interfaces.length;
return interfaces;
},
// nsIXTFVisual (nsIXTFXMLVisual の派生元) の実装
visualContent: null,
insertionPoint: null,
applyDocumentStyleSheets: true,
// nsIXTFXMLVisual の実装
onCreated: function (/* nsIXTFXMLVisualWrapper */ wrapper)
{
...
var builder = Components.classes["@mozilla.org/xtf/xml-contentbuilder;1"]
.createInstance(
Components.interfaces.nsIXMLContentBuilder);
builder.setElementNamespace("http://www.w3.org/1999/xhtml");
builder.beginElement("table");
...
builder.endElement(); // table
this.visualContent = builder.root;
},
// nsISupports の実装
QueryInterface: function (iid)
{
if (iid.equals(Components.interfaces.nsIXTFXMLVisual) ||
iid.equals(Components.interfaces.nsIXTFVisual) ||
iid.equals(Components.interfaces.nsIXTFElement) ||
iid.equals(Components.interfaces.nsISupports))
return this;
Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
return null;
}
};
まずは elementType
[LINK] にそれがどういう種類の要素か指定する。指定できる値は以下のとおり。指定した値によって追加のインターフェースを実装する必要あり。
値 | 説明 | インターフェース |
---|---|---|
ELEMENT_TYPE_GENERIC_ELEMENT |
表示には反映されない要素を表すみたい。HTML での link 要素とか script 要素とかみたいなものか。 | nsIXTFGenericElement |
ELEMENT_TYPE_SVG_VISUAL |
SVG を使って表示する要素を表すみたい。 | nsIXTFSVGVisual |
ELEMENT_TYPE_XML_VISUAL |
何らかの内容を表示する一般的な要素。とりあえず SVG を使わないのならこれを指定しておけばいいのか? | nsIXTFXMLVisual |
ELEMENT_TYPE_XUL_VISUAL |
XUL 要素と同等の要素? | nsIXTFXULVisual |
ELEMENT_TYPE_BINDABLE |
XBL によるバインディングが可能な要素? | nsIXTFBindableElement |
isAttributeHandler
[LINK] はとりあえず false
にしておけばよさそう。true
にすると nsIXTFAttributeHandler インターフェース
コメントをする