Greasemonkey - 集成滚动和鼠标点击动作

Greasemonkey - integrating scroll and mouse click action

我在玩游戏的页面上有一堆 link。

要求是滚动到 link 并单击它。我成功地点击了它。

function clickLinkWithText () {
    var links = $('a[href*="xyz.com"]');
    var randomNum = Math.floor(Math.random()*links.length);   
    var targetLink = links.get(randomNum);
    triggerMouseEvent (targetLink, "click"); 
}

但首先,我如何滚动到该元素然后单击它。我应该在这里更改什么?

function scrollToElement() {    
   window.setTimeout("window.scrollTo(0, document.body.offsetHeight);", 
   1000);
};

window.addEventListener('mouseover',function() {
    scrollToElement()
},true);

在大多数浏览器中,您可以通过调用 scrollIntoView() 来滚动到某个元素。然后,您可以设置一个小的超时时间(以便浏览器有时间滚动到该元素),之后您可以单击该元素。例如,以下用户脚本将滚动到您的用户名并单击它:

// ==UserScript==
// @name         scroll-click
// @namespace    CertainPerformance
// @version      1
// @match        
// @grant        none
// ==/UserScript==

const a = document.querySelector('a[href="/users/1089173/curiousdev"]');

function scrollToElement() {
  a.scrollIntoView();
  setTimeout(() => {
    a.click();
  }, 1000);
};

window.addEventListener('mouseover', scrollToElement);

请注意,不需要 jQuery,您可以将函数名称 直接 传递给 addEventListener 而不是将其包装在另一个匿名函数中.

此外,尽量避免将字符串传递给 setTimeout - 这与 eval 基本相同。最好传递一个实际的函数。