为了让我的脚本更加不可检测健壮,我决定使用更多人类事件,即鼠标悬停,mousedown,mouseup,mouseout。由于这些是jQuery依赖,我添加了
// @require https://code.jquery.com/jquery-3.1.1.slim.min.js
到我的脚本顶部,并按照Greasmonkey Wiki中的说明包含此行:
this.$ = this.jQuery = jQuery.noConflict(true);
当我运行此脚本时,我在控制台中收到此错误:
Uncaught TypeError: document.getElementsByClassName(...)[0].mouseover is not a function
这会让我相信jQuery尚未加载到脚本安装上。我尝试了没有'noConflict'的相同代码,它有效地打破了网站,并且仍然返回上述错误。
这是我的代码:
else if (document.getElementsByClassName('thumb-container active')[0] == null &&
document.getElementsByClassName('feed-ajax-next')[0] != null){
document.getElementsByClassName('feed-ajax-next')[0].mouseover();
console.log("M_over");
document.getElementsByClassName('feed-ajax-next')[0].mousedown();
console.log("M_down");
document.getElementsByClassName('feed-ajax-next')[0].mouseup();
console.log("M_up");
document.getElementsByClassName('feed-ajax-next')[0].mouseout();
console.log("M_out");
答案 0 :(得分:2)
document.getElementsByClassName()
不返回jQuery对象,但mouseover()
和其他函数是jQuery函数。
在这种情况下,您需要使用jQuery('.feed-ajax-next')
将元素作为jQuery对象,然后使用这样的函数 - jQuery('.feed-ajax-next').mouseover()
您可以在此处阅读有关jQuery对象的更多信息:https://learn.jquery.com/using-jquery-core/jquery-object/