Выполнить функцию при изменении класса тега
Здравствуйте! Пытаюсь написать бота в виде плагина для хрома, и оказалось, что программист из меня не очень..
Нужно чтобы выполнялась определенная функция сразу после добавления нового класса в определенный тег на странице сайта. Подскажите реализацию пожалуйста. |
Создайте свое событие и вызывайте его каждый раз после добавления класса.
Что то как то так. $('#elem').on('mainEvent', function ( e ) { // Ваша функция. }); $('#elem').addClass('mainClass').trigger('mainEvent'); |
Ну или если очень заморочится то можно воспользоваться событием DOMSubtreeModified.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style>.main { color: red; }</style> <script type="text/javascript" src="js/jquery-3.1.1.min.js"></script> <script type="text/javascript"> $(function () { $('#elem').on('DOMSubtreeModified', function (event) { if( $(this).hasClass('main') ) { this.style.fontSize = 30 + 'px'; } else { this.style.fontSize = ''; } }); }) </script> </head> <body> <div id="elem">Это текст в элементе #ELEM</div> <button onclick="$('#elem').addClass('main');">Кнопка add</button> <button onclick="$('#elem').removeClass('main');">Кнопка remove</button> </body> </html> |
DOMSubtreeModified - Event, как я понял его решили не поддерживать, так как он сильно нагружает процессор. В итоге я все же смог разобраться как работает MutationObserver, и он отлично подошел, но осталась всего 1 проблема. По всей видимости на сайте стоИт защита от ботов - проявляется это в виде того, что сайт и все его элементы якобы безостановочно многократно и моментально обновляются, что вызывает постоянные многочисленные срабатывания и от того многочисленные выполнения вложенной функции. Не знаю как предотвратить такие срабатывания... Если бы как-то поставить таймер с условием, что функция может отработать только 1 раз например в 3 секунды..
Может кто знает как такое реализовать? |
Часовой пояс GMT +3, время: 19:43. |