Имитация нажатия кнопки div GMail с помощью JS

Я хочу имитировать нажатие кнопки GMail COMPOSE с помощью JS без JQuery.

Вот кнопка:

<div class="T-I J-J5-Ji T-I-KE L3" role="button" tabindex="0" gh="cm" 
style="-webkit-user-select: none;">COMPOSE</div>

Вот мой js:

var element = document.getElementsByClassName('T-I-KE')[0];
element.click();

Результат:undefined во всех браузерах

Изображение: http://i.imgur.com/4IX9DZX.png

Это уже пробовали:

var event = document.createEvent("MouseEvent");
event.initEvent("click",true,true);
var element=document.getElementsByClassName("T-I-KE")[0];
element.dispatchEvent(event);

Результат:true. Но ничего не происходит.

Изображение: http://i.imgur.com/pwVqukP.png


person Mikolaytis    schedule 12.02.2015    source источник
comment
Попробуйте это: stackoverflow.com/a/11765093/4506790   -  person Deurco    schedule 12.02.2015
comment
не работает. Возвращает истину. Но ничего не происходит. Изображение результата: i.imgur.com/pwVqukP.png   -  person Mikolaytis    schedule 12.02.2015


Ответы (2)


Через два дня я наконец получил ответ!

Эта кнопка прослушивает события mouseDown и mouseUP. Рабочий код:

var down = new MouseEvent('mousedown');
var up = new MouseEvent('mouseup');
var elem = document.getElementsByClassName("T-I-KE")[0];
elem.dispatchEvent(down);
elem.dispatchEvent(up);
person Mikolaytis    schedule 12.02.2015
comment
См. stackoverflow.com/questions/10213703/ о том, как отслеживать события - это сэкономит вам много головных уборов :). - person thdoan; 01.03.2016
comment
Это хорошо работает для некоторых кнопок (например, «написать» или «еще»), но никак не влияет на другие кнопки (например, «настройки» в правом углу). После нескольких часов наблюдения за событиями я сдался. Кто-нибудь может нажать «Настройки» программно? - person Edvard Rejthar; 01.12.2017

Функция getElementsByClassName(classString) вернет элементы с классом именно той строки, которую вы ей передадите. Попробуйте использовать querySelector, например

document.querySelector(".T-I-KE");

Это вернет первый элемент с классом T-I-KE. Если вам нужны ВСЕ элементы с этим классом, вместо этого вызовите функцию querySelectorAll

person Yerko Palma    schedule 12.02.2015
comment
У меня нет проблем с выбором кнопки. Я не могу имитировать щелчок по нему. Вот ваш пример: i.imgur.com/riFnz1o.png Результат тот же. - person Mikolaytis; 12.02.2015