如何点击带有 javascript 书签的网站元素?

How to click on an element of a website with javascript bookmarklet?

我想做的是点击这个图标(每个网站大约有 16 个,一个接一个,点击第一个,转到下一个可用的,等等....

为了理解...

有时它有另一个眼睛图标:(它稍微改变了代码)

我知道我们可以从控制台进行操作,但为了方便起见,我更愿意从书签进行操作(将代码添加到书签,然后在需要时单击它) 所以,我所知道的(感谢@Sphinx)是我们必须写在 bookmarkletjavascript:$("span.icon.icon_eye").click() 主要问题 是当我点击它时,它会点击第一个图标眼睛,我需要先点击第一个眼睛图标,然后是第二个,然后是第三个,依此类推...

根据您的意见,以下代码应该是您所需要的。

  1. bind click 所有 span.icon_eye 的事件。

  2. 单击 each <span class="icon icon_eys"> second by second (setTimeout)。

function clickSomething() {
  $('span.icon.icon_eye').on('click', function(){console.log('You clicked', $(this).html())});
  $('span.icon.icon_eye').each(function(index){setTimeout(()=>{$(this).click()}, index*1000);});
}

setTimeout(clickSomething, 1000)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<span class="icon icon_eye">A</span>
<span class="icon icon_eye">B</span>
<span class="icon icon_eye">C</span>
<span class="icon icon_eye">D</span>
<span class="icon icon_eye">E</span>
<span class="icon icon_eye">F</span>
</div>

尝试:

var currentBookmark = $($('.icon_eye').get(0));
var bookmarkClicker = function() {
  console.log('you clicked bookmark at ' + currentBookmark.text());
  setTimeout(function() {
    currentBookmark = currentBookmark.next('.icon_eye');
    if (currentBookmark) {
      currentBookmark.on('click', bookmarkClicker);
      currentBookmark.click();
    }
  }, 500);
};
currentBookmark.on('click', bookmarkClicker);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<span class="icon icon_eye">A</span>
<span class="icon icon_eye">B</span>
<span class="icon icon_eye">C</span>
<span class="icon icon_eye">D</span>
<span class="icon icon_eye">E</span>
<span class="icon icon_eye">F</span>
</div>