#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 раза по метке как важного элемента работает.