У меня есть простой контент-скрипт для моего расширения Chrome, который должен захватывать заголовки видео YouTube. Моя проблема в том, что это сработало только один раз. Я попытался получить доступ к дочерним узлам HTMLCollection, который должен быть только один, но я получаю ноль неопределенных. Делать что-то вроде:
element[0].innerText;
не дает мне ничего полезного, но из моего понимания, если я использую getElementsByClassName и применяю innerText к первому элементу с [0], это будет работать. Это может быть связано с неполной загрузкой html, поскольку иногда я получаю значение NULL, но HTMLCollection всегда имеет свойство, к которому я хочу получить доступ, просто сидя там.
Также:
element.length
возвращает 0.
Это то, что я обычно получаю со своим сценарием.

Внутри есть свойство "innerText", которое я хочу получить.

И это то, что я получил один раз, когда это сработало.

{
"manifest_version": 2,
"name": "test",
"author": "Muhammad Amer",
"description": "test",
"version": "1.0",
"content_scripts": [
{
"matches": [
"https://www.youtube.com/*"
],
"js": ["jquery-3.3.1.js", "content.js"]
}
],
"permissions": [
"https://www.youtube.com/*",
"tabs",
"activeTab",
"webNavigation"
]
}
var element = document.getElementsByClassName("title style-scope ytd-video-
primary-info-renderer");
console.log(element);
for (var i = 0; i < element.length; i++) {
var songTitle = element[i].innerText;
console.log(songTitle);
}