Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.10.2016, 11:54
Новичок на форуме
Отправить личное сообщение для nvkz-delete Посмотреть профиль Найти все сообщения от nvkz-delete
 
Регистрация: 15.10.2016
Сообщений: 3

Выполнить функцию при изменении класса тега
Здравствуйте! Пытаюсь написать бота в виде плагина для хрома, и оказалось, что программист из меня не очень..
Нужно чтобы выполнялась определенная функция сразу после добавления нового класса в определенный тег на странице сайта. Подскажите реализацию пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 15.10.2016, 12:36
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Создайте свое событие и вызывайте его каждый раз после добавления класса.
Что то как то так.
$('#elem').on('mainEvent', function ( e ) {
// Ваша функция.
});

$('#elem').addClass('mainClass').trigger('mainEvent');
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2016, 13:04
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Ну или если очень заморочится то можно воспользоваться событием 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>
Ответить с цитированием
  #4 (permalink)  
Старый 15.10.2016, 16:47
Новичок на форуме
Отправить личное сообщение для nvkz-delete Посмотреть профиль Найти все сообщения от nvkz-delete
 
Регистрация: 15.10.2016
Сообщений: 3

DOMSubtreeModified - Event, как я понял его решили не поддерживать, так как он сильно нагружает процессор. В итоге я все же смог разобраться как работает MutationObserver, и он отлично подошел, но осталась всего 1 проблема. По всей видимости на сайте стоИт защита от ботов - проявляется это в виде того, что сайт и все его элементы якобы безостановочно многократно и моментально обновляются, что вызывает постоянные многочисленные срабатывания и от того многочисленные выполнения вложенной функции. Не знаю как предотвратить такие срабатывания... Если бы как-то поставить таймер с условием, что функция может отработать только 1 раз например в 3 секунды..
Может кто знает как такое реализовать?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
window.onscroll при достижении объекта на странице выполнить функцию linki Общие вопросы Javascript 1 03.01.2016 20:38
запуск и остановка скрипта при изменении правила display onuvidelsolnce Элементы интерфейса 9 03.02.2014 16:44
Выполнить функцию заранее неизвестную Neokortex jQuery 2 13.02.2012 12:41
Добавление класса на елемент по id при фокусе на input Andrew_tl Events/DOM/Window 1 18.02.2010 19:09
выполнение ф-ии при изменении состояния radio MaxB Events/DOM/Window 5 24.06.2009 14:24