Проверка <head>содержит спецификацию c <link>без JQuery - PullRequest
0 голосов
/ 12 марта 2020

Можно ли проверить, что <head> содержит указанный тег c <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;

Но я не могу просмотреть это, чтобы проверить. ..

Ответы [ 3 ]

1 голос
/ 12 марта 2020

Я бы использовал querySelectorAll, а не детей. Я бы преобразовал коллекцию HTML в массив и использовал некоторые для l oop поверх коллекции, чтобы найти совпадение с href.

const exist = Array.from(
  document.querySelectorAll('link[rel="stylesheet"]')
).some(link => link.href === 'https://my.path.css')
1 голос
/ 12 марта 2020

Причина, по которой вы не можете «перемещаться» headChildren, заключается в том, что это «итеративный», но официально не массив.

Используйте Array.from, чтобы преобразовать его, тогда вы можете рассматривать его как обычный массив .

let actualArray = Array.from(headChildren)

Вы также можете перебирать итерации с помощью for of l oop:

for (let child of headChildren) {
  console.log(child)
}
0 голосов
/ 12 марта 2020

Предложения для l oop были только половиной решения, которое мне требовалось.

Я хотел простой способ проверить, присутствует ли точный тег, который я создал и вставил в.

Я пытался все виды равенства, но безрезультатно. '==' и '===' не сработают, я полагаю, из-за ссылки на идентификаторы объектов и т. д. c как страдают строки.

Я нашел решение с помощью `.isEqualNode ', который равен два узла.

Поэтому мое решение в итоге было:

const headChildren = document.getElementsByTagName('head')[0].children;

for (let child or headChildren) {
    if (child.isEqualNode(myLinkNode) {
        // Do something
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...