Определить, когда пользователь фокусируется на документе - PullRequest
0 голосов
/ 29 мая 2019

У меня есть приложение чата для двух человек, и, например, один из них отправляет сообщение второму.

Когда второй доставляет документ и фокусируется на нем, браузер проверяет, есть ли у последнего элемента в родительском div класс «his_message», и если это так, браузер (через socket.io) отправляет сообщение первому пользователю (который отправил сообщение), что его партнер видел его сообщение, в противном случае: ничего не делать.

Это похоже на «увиденную» функцию Facebook, когда Facebook уведомляет вас, что ваш собеседник видел ваше сообщение.

Я использовал MutationObserver для реализации того, что я хочу:

const observer = new MutationObserver((mutations)=>{   
    if(document.hasFocus()){
    console.log($('#output > :last-child').attr('class'));
    socket.emit('seen')
    }
 })

observer.observe(output, { attributes: true, childList: true, characterData: true, subtree: true });

Но если вы проверите это, вы будете знать, что это не работает, как я хочу.Итак, что я могу сделать, чтобы достичь своей цели?Спасибо!

1 Ответ

0 голосов
/ 29 мая 2019

Я полагаю, что лучшим способом будет связать пасхальное сообщение со столбцом базы данных (скажем, is_seen), где оно принимает логическое значение ... как только фокус сделан, измените значение на True в базе данных ... и выможет получить это значение для отображения, как видно при нажатии на сообщение, как в приложении для обмена сообщениями.

...