该函数用于从给定的根节点开始,深度优先遍历整个DOM树,并返回给定范围内DOM元素的搜索树。
rootNode
: 必需,DOM节点,要遍历的DOM树的根节点。options
: 可选,对象,包含以下属性:
includedTags
: 可选,数组,搜索时需要包含的标签名,如 ['div', 'p', 'span']
。默认情况下,搜索所有标签。includedAttributes
: 可选,数组,搜索时需要包含的属性名及属性值,如[{ name: 'class', value: 'example' }]
。默认情况下,搜索所有属性。excludedTags
: 可选,数组,搜索时需要排除的标签名。默认情况下,不排除任何标签。excludedAttributes
: 可选,数组,搜索时需要排除的属性名及属性值。默认情况下,不排除任何属性。该函数返回一个包含搜索到的DOM元素的搜索树。
const rootNode = document.getElementsByTagName('body')[0];
const options = {
includedTags: ['div'],
excludedAttributes: [{ name: 'class', value: 'example' }]
};
const searchTree = Yuka.getSearchTree(rootNode, options);
// searchTree 可以根据需要在console中log出来查看
该函数首先创建一个根节点,遍历给定的根节点以及其子节点,对每个满足搜索条件的DOM元素,创建一个对应的搜索节点,并将其添加到搜索树中。
由于本函数采用深度优先遍历算法,因此搜索顺序为从根节点到每个叶子节点的路径,每当遍历到一个子节点时,搜索树的当前指针向下移动。
具体实现细节请参阅对应源代码。