Отключить аннотации Youtube с помощью JavaScript

В настоящее время существует три способа, которыми я знаю, чтобы отключить аннотации в видео на YouTube:

  • Вы можете использовать настройки YouTube. Это не сработает для меня, поскольку у меня нет (и не требуется) учетной записи.
  • Вы можете использовать специализированное расширение. Это может сработать, но Id скорее не будет иметь полнофункциональное расширение с множеством опций, просто для этого.
  • Вы можете использовать расширение блокировки объявления (ad) и добавить ||youtube.com/annotations_ в свои фильтры. Это связано с тем же вопросом, что и предыдущий пункт. Кроме того, он полностью отключает их, а я просто хочу, чтобы они отключились по умолчанию (поэтому у меня есть возможность включить их).

Можно ли это сделать с помощью JavaScript? У меня есть UserScript, который уже выполняет некоторые изменения на веб-сайте YouTubes, поэтому идеально Id хотел бы расширить его. Это действительно последняя вещь, которую я не вижу.

Я прошу, чтобы ответы были ограничены использованием JS, а не рекомендациями расширений браузера. И то, и другое (как уже упоминалось), я уже знаю об этом, и потому что это касается процесса обучения как результата. Его практика для большего количества пользовательских скриптов.

Ответ 1

Так как youtube иногда меняет поведение игроков, я пытаюсь сохранить код в актуальном состоянии и максимально надежным.

var settings_button = document.querySelector(".ytp-settings-button");
settings_button.click(); settings_button.click(); // open and close settings, so annotations label is created

var all_labels = document.getElementsByClassName("ytp-menuitem-label");
for (var i = 0; i < all_labels.length; i++) {
  if ((all_labels[i].innerHTML == "Annotations") && (all_labels[i].parentNode.getAttribute("aria-checked") == "true")) { // find the correct label and see if it is active
    all_labels[i].click(); // and in that case, click it
  }
}

Ответ 2

Пользовательский код верен, нужно настроить параметры, а затем:

document.querySelectorAll("div[role='menuitemcheckbox']")[1].click() 

Я добавил его к своему "выключению автозапуска и аннотации" script: https://gist.github.com/Sytric/4700ee977f427e22c9b0


Ранее работающий JS:

document.querySelectorAll("div[aria-labelledby=\"ytp-menu-iv\"]")[0].click()

Ответ 4

Вот хорошее решение, просто спрячьте div с аннотациями

$("div.video-annotations").css("display", "none");