Выполнить функцию при изменении класса тега
Здравствуйте! Пытаюсь написать бота в виде плагина для хрома, и оказалось, что программист из меня не очень..
Нужно чтобы выполнялась определенная функция сразу после добавления нового класса в определенный тег на странице сайта. Подскажите реализацию пожалуйста. |
Создайте свое событие и вызывайте его каждый раз после добавления класса.
Что то как то так.
$('#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, время: 15:28. |