The nsIDOMDocumentXBL Interface

The nsIDOMDocumentXBL interface contains methods for manipulating XBL bindings. The interface is implemented by all DOM documents.

IDL Definition

interface nsIDOMDocumentXBL {
  NodeList getAnonymousNodes(in Element elt);
  Element getAnonymousElementByAttribute(in Element elt,
                                         in DOMString attrName,
                                         in DOMString attrValue);

  Element getBindingParent(in Node node);
  void loadBindingDocument(in DOMString documentURL);
};

Methods

getAnonymousNodes

The getAnonymousNodes method retrieves the anonymous children of the specified element.

getAnonymousElementByAttribute

The getAnonymousElementByAttribute methods retrieves an anonymous descendant with a specified attribute value. Typically used with an (arbitrary) anonid attribute to retrieve a specific anonymous child in an XBL binding.

getBindingParent

The getBindingParent method is used to obtain the bound element with the binding attached that is responsible for the generation of the specified anonymous node. This method enables an author to determine the scope of any content node. When content at the document-level scope is passed in as an argument, the property's value is null.

loadBindingDocument

The loadBindingDocument method can be used to synchronously obtain the specified binding document for use within a particular document (the one on which the loadBindingDocument method was invoked). The binding document can then be modified programmatically using the DOM. Any subsequent bindings that are attached to elements within the document will be constructed from the modified binding document.

Example

The following snippet checks to see if any anonymous child of "element" is itself an element.

if (element.ownerDocument instanceof Ci.nsIDOMDocumentXBL)
{
    var anonChildren = element.ownerDocument.getAnonymousNodes(element);
    if (anonChildren)
    {
        for (var i = 0; i < anonChildren.length; i++)
        {
            if (anonChildren[i].nodeType == 1)
                return false;
        }
    }
}
return true;