Отключить аннотации 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()
Ответ 3
iv_load_policy (поддерживаемые игроки: AS3, AS2, HTML5)
Значения: 1 или 3. Значение по умолчанию 1. Установка в 1 приведет к тому, что по умолчанию будут показаны аннотации видео, тогда как установка на 3 приведет к тому, что аннотации видео не будут отображаться по умолчанию.
Ответ 4
Вот хорошее решение, просто спрячьте div с аннотациями
$("div.video-annotations").css("display", "none");