如何使用Greasemonkey修改或覆盖网站的jQuery代码。 jQuery库已经被网站加载,jQuery自定义代码是我想要更改/修改的东西。如何用Greasemonkey覆盖它?
例如,我想覆盖此代码(由网站编写):
$('.side-nav-flyout').hover(function() {
$(this).children('ul').fadeIn();
}, function() {
$(this).children('ul').fadeOut();
});
使用此(我的覆盖):
$('.side-nav-flyout').hover(function() {
$(this).children('ul').show();
}, function() {
$(this).children('ul').hide();
});
具体在哪里将覆盖代码放在用户脚本中并将其包装在document.ready中?
答案 0 :(得分:1)
如果要取消绑定悬停事件,然后将其与您的重新绑定,该怎么办?
$('.side-nav-flyout').unbind('hover').hover(function() {
$(this).children('ul').show();
}, function() {
$(this).children('ul').hide();
});
答案 1 :(得分:1)
如果你可以完全破坏页面的.fadeIn()
和.fadeOut()
方法,你可以随时采用“强力”方法:
unsafeWindow.$.fn.fadeIn = unsafeWindow.$.fn.show;
unsafeWindow.$.fn.fadeOut = unsafeWindow.$.fn.hide;
答案 2 :(得分:0)
根据Greasemonkey的常见问题解答......
Greasemonkey允许您添加JavaScript 任何代码(称为“用户脚本”) 网页,将在其HTML时运行 代码已加载。
这将不允许您替换Greasemonkey脚本之前执行的任何代码。它允许您覆盖将来访问或运行的任何内容,如全局变量,对象属性和函数。我总是把它想象成“一旦页面加载,我想改变X,Y和Z”。使用您的示例,如果该代码位于如下函数中:
function ShowItems() {
$("div.fadeList").each(function() {
$(this).children('ul').fadeIn();
});
}
您可以覆盖它,以便后续调用可以运行您的代码......
function ShowItems() {
$("div.fadeList").each(function() {
$(this).children('ul').show();
});
}
如果您只是想根据自己的喜好改变页面,可以这样做:
$("div.fadeList ul).show();