GMail — Помечайте почту как важную с помощью jQuery/Javascript

#javascript #jquery #google-chrome-extension

Вопрос:

Я создаю расширение Chrome, которое должно выполнять некоторые действия в интерфейсе электронной почты GMail. Одним из действий является пометка электронного письма как важного, но я действительно изо всех сил пытаюсь смоделировать событие click() для элементов, необходимых для достижения этой цели.

Чтобы легче воспроизвести проблему, мы можем забыть о «расширении chrome» и просто сосредоточиться на консоли браузера. В интерфейсе GMail, открыв сообщение электронной почты, просто попробуйте нажать на значок «Дополнительно» и «Отметить как важное». Я перепробовал множество элементов (родительский, дочерний, эквалайзер(0), эквалайзер(1) и т. Д.) Вокруг основных, Но, похоже, ничто не запускает опцию «Отметить как важную».

Прямо сейчас я обнаружил, что для меню «Больше» подходит следующее:

 function clickSimulate(element)
{
    var down = new MouseEvent('mousedown');
    var up = new MouseEvent('mouseup');
    element.dispatchEvent(down);
    element.dispatchEvent(up);  
}

clickSimulate($("div[data-tooltip='More']")[0]);
 

Отметка как важный вариант все еще неудачна. У кого-нибудь есть решение?

Я все еще рассматриваю возможность использования API IMAP или GMail(не уверен, что это такое) для решения этой проблемы. Но некоторые необходимые конкретные действия были бы лучше вписаны в код javascript, запускаемый в интерфейс веб-почты. Вот почему я все еще настаиваю на том, чтобы попытаться решить эту конкретную проблему (отметить как важную) с помощью того же решения.

Ответ №1:

Я заставил это работать, сделав:

 function clickSimulate(element)
{
    var evt = document.createEvent('MouseEvents');
    evt.initMouseEvent('mousedown', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    element.dispatchEvent(evt);
    
    var evt = document.createEvent('MouseEvents');
    evt.initMouseEvent('mouseup', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    element.dispatchEvent(evt); 
}
 

Вызов этой функции 2 раза по метке как важного элемента работает.