检查 <head> 包含特定的 <link> 而没有 JQuery
Check <head> contains specific <link> without JQuery
是否可以检查 <head>
是否包含特定的 <link>
标签?
例如我会在头部添加一个link:
let link = document.createElement('link');
link.href = 'https://my.path.css';
link.type = 'text/css';
link.rel = 'stylesheet';
document.head.append(link);
是否可以检查它是否存在于头部?
我知道我可以通过
获得一个 HTMLCollection
const headChildren = document.getElementsByTagName('head')[0].children;
但我似乎无法通过导航来检查...
你不能 "navigate" headChildren
的原因是因为它是一个 'iterable' 但不是正式的数组。
使用Array.from
转换后就可以像普通数组一样处理了。
let actualArray = Array.from(headChildren)
您还可以使用 for of
循环遍历 'iterables':
for (let child of headChildren) {
console.log(child)
}
我会使用 querySelectorAll 而不是 children。我会将 HTML 集合转换为数组,并使用一些数组遍历集合以找到与 href 的匹配项。
const exist = Array.from(
document.querySelectorAll('link[rel="stylesheet"]')
).some(link => link.href === 'https://my.path.css')
循环的建议只是我需要的解决方案的一半。
我想要一种简单的方法来检查我创建并推入的确切标签是否存在。
我尝试了所有不同类型的平等都无济于事。 '==' 和 '===' 不会工作,我假设是因为引用了对象标识等,例如字符串。
我找到了使两个节点相等的“.isEqualNode”的解决方案。
所以我最后的解决方案是:
const headChildren = document.getElementsByTagName('head')[0].children;
for (let child or headChildren) {
if (child.isEqualNode(myLinkNode) {
// Do something
}
}
是否可以检查 <head>
是否包含特定的 <link>
标签?
例如我会在头部添加一个link:
let link = document.createElement('link');
link.href = 'https://my.path.css';
link.type = 'text/css';
link.rel = 'stylesheet';
document.head.append(link);
是否可以检查它是否存在于头部?
我知道我可以通过
获得一个 HTMLCollectionconst headChildren = document.getElementsByTagName('head')[0].children;
但我似乎无法通过导航来检查...
你不能 "navigate" headChildren
的原因是因为它是一个 'iterable' 但不是正式的数组。
使用Array.from
转换后就可以像普通数组一样处理了。
let actualArray = Array.from(headChildren)
您还可以使用 for of
循环遍历 'iterables':
for (let child of headChildren) {
console.log(child)
}
我会使用 querySelectorAll 而不是 children。我会将 HTML 集合转换为数组,并使用一些数组遍历集合以找到与 href 的匹配项。
const exist = Array.from(
document.querySelectorAll('link[rel="stylesheet"]')
).some(link => link.href === 'https://my.path.css')
循环的建议只是我需要的解决方案的一半。
我想要一种简单的方法来检查我创建并推入的确切标签是否存在。
我尝试了所有不同类型的平等都无济于事。 '==' 和 '===' 不会工作,我假设是因为引用了对象标识等,例如字符串。
我找到了使两个节点相等的“.isEqualNode”的解决方案。
所以我最后的解决方案是:
const headChildren = document.getElementsByTagName('head')[0].children;
for (let child or headChildren) {
if (child.isEqualNode(myLinkNode) {
// Do something
}
}