-
-
Notifications
You must be signed in to change notification settings - Fork 112
Expand file tree
/
Copy pathgetAllTag.js
More file actions
39 lines (34 loc) · 922 Bytes
/
getAllTag.js
File metadata and controls
39 lines (34 loc) · 922 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// B站: 获取页面中的所有标签名
// 自带的方法
function getAllTagApi() {
const arr = document.getElementsByTagName('*') // 获取所有标签
const resArr = []
for (let i = 0; i < arr.length; i++) {
const tagName = arr[i].localName // 获取标签名
// 去重
if (!resArr.includes(tagName)) {
resArr.push(tagName)
}
}
return resArr
}
console.log('getAllTagApi', getAllTagApi())
// 正则匹配的方式
function getAllTag() {
const resArr = []
const str = document.body.innerHTML
const reg = /<(\w+)/g // 匹配标签名 加g全局匹配才可循环
let match = null
// 循环匹配
// eslint-disable-next-line no-cond-assign
while ((match = reg.exec(str))) {
const tagName = match[1]
// 去重
if (!resArr.includes(tagName)) {
resArr.push(tagName)
}
}
return resArr
}
console.log('111', getAllTag())
// 递归遍历dom的形式