Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Перестал работать .click() на елементе в расширении chrome (https://javascript.ru/forum/events/72972-perestal-rabotat-click-na-elemente-v-rasshirenii-chrome.html)

Signal 10.03.2018 23:10

Перестал работать .click() на елементе в расширении chrome
 
Здравствуйте.
Работало мое расширение для одного сайта, работали операции по клику мышки

$('#idAllSelect').children('.data').each(function() {
  $(this).click(); //===работало
});


работало, пока держатели сайте не переделали методы работы, пока ковыряюсь в их коде но в закодированном 1 мегабайте текста буду еще долго ковырять, какие есть другие способы чтобы, заставить все таки сработать событие .click() может есть какие другие варианты?

Signal 11.03.2018 11:52

Проблему решил, оказалось что там обрабатывается не событие click, а прослушивает mousedown

var dispatchMouseEvent = function(target, var_args) {
  var e = document.createEvent("MouseEvents");
  // If you need clientX, clientY, etc., you can call
  // initMouseEvent instead of initEvent
  e.initEvent.apply(e, Array.prototype.slice.call(arguments, 1));
  target.dispatchEvent(e);
};

//===И сам клик, в моем случае
$('#idAllSelect').children('.data').each(function() {
//  $(this).click(); //===работало
	let Idleme = $(this).attr('id');
	let EleClick = document.getElementById(Idleme);
        dispatchMouseEvent(EleClick, 'mouseover', true, true);
        dispatchMouseEvent(EleClick, 'mousedown', true, true);
        dispatchMouseEvent(EleClick, 'click', true, true);
        dispatchMouseEvent(EleClick, 'mouseup', true, true);		

});

Nexus 12.03.2018 16:18

http://api.jquery.com/trigger/

Signal 12.03.2018 18:44

Цитата:

Сообщение от Nexus (Сообщение 480352)

да я его пробовал, не пашет

j0hnik 12.03.2018 18:53

Signal,
тут где то похожая темка была

EleClick.dispatchEvent(new Event("mousedown"));

Signal 12.03.2018 19:00

Цитата:

Сообщение от j0hnik (Сообщение 480360)
Signal,
тут где то похожая темка была

EleClick.dispatchEvent(new Event("mousedown"));

самое, что интересно, через new Event тоже не пахало
я сутки прокурил весь инет, и тока на этом сайте мой вариант заработал
причем

dispatchMouseEvent(EleClick, 'mouseover', true, true);
dispatchMouseEvent(EleClick, 'mousedown', true, true);
dispatchMouseEvent(EleClick, 'click', true, true);
dispatchMouseEvent(EleClick, 'mouseup', true, true);

любую из этих строк ремиш, и перестает работать

j0hnik 12.03.2018 19:16

видимо для всех этих событий назначены обработчики.

Signal 12.03.2018 19:18

Цитата:

Сообщение от j0hnik (Сообщение 480365)
видимо для всех этих событий назначены обработчики.

хз курил их код там тока mousedown

Nexus 12.03.2018 20:24

Цитата:

Сообщение от Signal
да я его пробовал, не пашет

Вы все 4 события подряд пытались запустить или только "mousedown"?

Signal 12.03.2018 21:19

dispatchMouseEvent(EleClick, 'mouseover', true, true);
dispatchMouseEvent(EleClick, 'mousedown', true, true);
dispatchMouseEvent(EleClick, 'click', true, true);
dispatchMouseEvent(EleClick, 'mouseup', true, true);

любую из этих строк ремиш, и перестает работать

соответсвенно пробовал менять последовательность, не пашет, тока в этом порядке ну это и логически понятно, но пашет тока так


Часовой пояс GMT +3, время: 20:30.