Soul1, background.js не относится ни к какому сайту и ни к какой вкладке, так что код из него и не должен находить элементы на страницах. Пишу на всякий случай, так как это вы похоже и так знаете.
Контент-скрипт может не находить некоторые элементы, которые созданы после выполнения контент-скрипта, например через setTimeout.
getElementsByClassName всегда возвращает HTMLCollection, без вариантов, это не ошибка. А вот то, что из кода 0, а из консоли 1, это уже не порядок. Ищите проблему поэтапно. Как вариант, посмотрите, а что вообще находит, та ли эта страница или не та и т.д.
Антон Шаманов,
5 - это 101 (в двоичной системе), то есть 1+4, то есть (a|c)
7 - это 111, то есть 1+2+4, то есть (a|b|c)
Любое число от 0 до 31 будет валидным набором флагов, если их всего пять и если нет каких-то специальных условий.
Таким специальным условием может быть, например, ограничение количества флагов. Например, максимум 2 флага. Тогда и правда 7 будет невалидной маской. Но тогда и функцию нужно делать соответственно критерию невалидности. Например, в примере выше нужно подсчитывать количество флагов (т.е. количество бит в маске).
P.S. можно назвать "массив JSON" и это тоже будет верно. Вообще массив, как таковой, это прежде всего возможность быстрого доступа по числовому индексу. Это главное. А список больше ассоциируется со связным списком, который совсем не то. И так как JSON - это текстовый формат, то о "доступе" говорить не приходится, о нём можно будет говорить только после распаковки в какую-нибудь структуру в памяти.
И при чём здесь ООП? Я конечно люблю ООП, но его тоже надо уметь готовить и не применять везде подряд. В Луа ООП возможно (впрочем, как в ассемблере и любом другом языке, где ООП не предусмотрено синтаксисом напрямую). Достаточно спросить у гугла, как ООП возможно в Луа (спойлер: практически так же, как и в JavaScript).
accountnujen, если драйвер конкретно от микрософт, то логика как раз очевидна) Просто для специфических устройств обычно предусмотрены специфические драйвера от производителя.
Aetae, раньше я тоже так думал. Тем не менее, в скриптовых языках с изобилием хеширования создание новых строк занимает много времени, и чем больше строка, тем хуже. То есть последовательное добавление 1 кусочка к строке приводит к её пересозданию много раз.
А если вы говорите про это "ускорение", то оно опасно утечками памяти. Нужно его понимать, чтобы не наломать дров.
В общем, оптимизация - это большая тема. Я не готов её обсуждать в этой ветке комментариев, извините.
Володимир Паламар, с виду всё хорошо.
Хотя я бы сначала сделал массив "кусочков", а потом на выходе склеил бы одним махом нативной функцией, особенно если предполагается работать с очень большими строками.
Схожесть есть. Некоторые даже путают с форумом. Так что почему бы и не сравнить? Я же не говорю, что Тостер является форумом, а лишь обращаю внимание на схожесть. Механизм отправки сообщений такой же. Структура тоже похожа. Просто здесь больше требований и ограничений, в этом главное отличие.
Но где у ТС серьёзный проект?
А я и не говорил, что у ТС серьёзный проект. Мой комментарий относится к вашему тезису, что форумы в 2021 устарели. Насколько я понял, этот тезис заявлен как универсальный, не относящийся к конкретному ТС, а вообще в целом о форумах.
Контент-скрипт может не находить некоторые элементы, которые созданы после выполнения контент-скрипта, например через setTimeout.
getElementsByClassName всегда возвращает HTMLCollection, без вариантов, это не ошибка. А вот то, что из кода 0, а из консоли 1, это уже не порядок. Ищите проблему поэтапно. Как вариант, посмотрите, а что вообще находит, та ли эта страница или не та и т.д.