@del993788

Почему при отслеживании сообщения VK он возвращается 2 раза?

Здравствуйте. Пытаюсь отследить сообщения в Вконтакте. Написал вот такой скрипт:
$("body").on('DOMSubtreeModified', "._dialog_body", function() {
if(this.textContent) {
console.log('%c' + $(this).parent().parent().find(".nim-dialog--name-w").text(), 'font-weight:bold;font-size:16px;');
console.log(this.textContent);
}


Но почему-то если ты будешь отправлять сообщение, то в консоли оно будет дублироваться. Если тебе присылают, то будет всё норм. Подскажите, с чем это связано и как исправить?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
@rotarepmipoleved
DOMSubtreeModified устарело в пользу MutationObserver.


Если не хотите переходить на MutationObserver пробуйте экспериментально узнать от чего зависит количество вызовов.

Для экспериментов можно предлагаю попробовать разные действия с отслеживаемым элементом:
$("body").on('DOMSubtreeModified', "#id", function(e) {
console.log(e);
});

Допустим элемент #id изначально пустой.
Пробую такую последовательность
$('#id').html(""); — вызывает функцию 1 раз
$('#id').html("hello"); — вызывает функцию 1 раз
$('#id').html("тест"); — вызывает функцию 2 раза
$('#id').html("next"); — вызывает 2 раза.
$('#id').html(""); — вызывает функцию 1 раз

Конкретно для этого примера понимаем, что запись в пустой элемент вызывает функцию 1 раз.
Перезапись непустого элемента - 2 раза, видимо:
1 вызов - Очистка элемента
2 вызов - Заполнение элемента.

И все же рекомендуется переходить на MutationObserver.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы