Я создаю расширение chrome, предназначенное для использования с gmail, которое должно предпринимать некоторые действия в зависимости от электронной почты, открытой в данный момент пользователем.
Моя задача состоит в том, чтобы захватить событие открытия электронной почты без опроса страницы. Я не вижу какого-либо прослушивателя событий «Открыто по электронной почте», доступного в API gmail или в API дополнений gmail.
Я попытался зарегистрировать прослушиватель щелчков по строке сообщения электронной почты, но у меня возникла проблема с синхронизацией, поскольку неясно, когда электронная почта будет фактически загружаться на экран после щелчка (зависит от скорости соединения пользователя).
Итак, в данный момент я опрашиваю экран каждые несколько секунд с помощью следующего кода в моем скрипте содержимого расширения chrome:
const watchEmails = () => {
const emailIdDiv = document.querySelector('div[data-legacy-message-id]');
if(emailIdDiv) {
const emailId = emailIdDiv.getAttribute('data-legacy-message-id');
// sending the email id to my chrom extension popup in the following manner
const emailContainer = document.querySelector('div.emailIdContainer');
if(emailIdContainer) {
emailIdContainer.innerHTML = emailId;
}
}
setTimeout(watchEmails, 3000);
}
document.onreadystatechange = function () {
if (document.readyState === "complete") {
setTimeout(() => watchEmails(), 3000);
}
}
Расширение chrome впоследствии проверяет, изменился ли идентификатор электронной почты, и выполняет внутренний вызов, который извлекает тело электронной почты из API gmail, используя идентификатор электронной почты.
Какие-либо предложения о том, как записать событие открытия электронной почты и впоследствии получить идентификатор более надежным и / или элегантным способом?