Почему эта функция запрашивает дважды?

#javascript #google-chrome #bookmarklet

#javascript #google-chrome #букмарклет

Вопрос:

Я написал букмарклет для нажатия контролируемого количества раз на HTML-элемент (для игр с кликерами и тому подобное). Однако, когда я запускаю его, он запрашивает «Сколько раз вы хотите щелкнуть?» дважды.

Насколько мне известно, второе приглашение ничего не делает. Есть ли способ избавиться от этого?

Код:

 javascript:
var clicked = false
document.onclick= function(event) {  
    if (!clicked) {
      var target= 'target' in event? event.target : event.srcElement;

      var clickamount= parseInt(prompt("Enter time to click " target.id))-1;

      for (let i = 0; i < clickamount; i  ) {
          target.click();
      }
      clicked = true
    }
    
};
 

Комментарии:

1.Вы прослушиваете «щелчки» по документу, поэтому каждый щелчок по дочерним элементам также будет отображаться в документе (вы устанавливаете только clicked = true после того, как ваш цикл запускает больше щелчков). Кроме того, всегда передавайте основание в parseInt .

2. Существует нечто, называемое делегированием событий: javascript.info/event-delegation

3. Как вы можете быть уверены, что сгенерированное click будет обработано после установки значения clicked false?