Пример #1
0
Node* LiveNodeListBase::rootNode() const
{
    if (isRootedAtDocument() && m_ownerNode->inDocument())
        return m_ownerNode->document();

    return m_ownerNode.get();
}
Пример #2
0
ContainerNode& LiveNodeList::rootNode() const
{
    if (isRootedAtDocument() && ownerNode().inDocument())
        return ownerNode().document();

    return ownerNode();
}
Пример #3
0
Node* DynamicNodeListCacheBase::rootNode() const
{
    if (isRootedAtDocument() && m_ownerNode->inDocument())
        return m_ownerNode->document();

    if (ownerNodeHasItemRefAttribute()) {
        if (m_ownerNode->inDocument())
            return m_ownerNode->document();

        Node* root = m_ownerNode.get();
        while (Node* parent = root->parentNode())
            root = parent;
        return root;
    }

    return m_ownerNode.get();
}
Пример #4
0
Node* LiveNodeListBase::rootNode() const
{
    if (isRootedAtDocument() && m_ownerNode->inDocument())
        return m_ownerNode->document();

#if ENABLE(MICRODATA)
    if (m_rootType == NodeListIsRootedAtDocumentIfOwnerHasItemrefAttr && toElement(ownerNode())->fastHasAttribute(HTMLNames::itemrefAttr)) {
        if (m_ownerNode->inDocument())
            return m_ownerNode->document();

        Node* root = m_ownerNode.get();
        while (Node* parent = root->parentNode())
            root = parent;
        return root;
    }
#endif

    return m_ownerNode.get();
}