Получить идентификатор электронной почты из Gmail при открытии электронной почты - PullRequest
0 голосов
/ 25 марта 2019

Я создаю расширение 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, используя идентификатор электронной почты.

Какие-либо предложения о том, как записать событие открытия электронной почты и впоследствии получить идентификатор более надежным и / или элегантным способом?

...