Zadudoser, решение зависит от того, в рамках чего выдано задание, то есть какие ограничения, кроме Вид->Закрепить. Ведь всегда можно написать полностью своё расширение, которое выполнит поставленную задачу. В любом случае, здесь задачи запрещены, так что придётся решать самостоятельно.
Zadudoser, а почему такое ограничение? Почему можно только с помощью формулы? У вас запрет на использование некоторых возможностей вашей таблицы или что?
Владимир, да, глобальную функцию объявлять нужно в глобальном контексте, а не внутри другой функции. Но не стоит забегать вперёд на этапе "а зачем вообще глобальное пространство". :)
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 кусочка к строке приводит к её пересозданию много раз.
А если вы говорите про это "ускорение", то оно опасно утечками памяти. Нужно его понимать, чтобы не наломать дров.
В общем, оптимизация - это большая тема. Я не готов её обсуждать в этой ветке комментариев, извините.