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
基本相同。最好传递一个实际的函数。
我在玩游戏的页面上有一堆 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
基本相同。最好传递一个实际的函数。