jQuery + Greasmonkey:mouseover()不是函数

时间:2017-03-05 21:10:55

标签: javascript jquery greasemonkey

为了让我的脚本更加不可检测健壮,我决定使用更多人类事件,即鼠标悬停,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");

1 个答案:

答案 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/