使用Greasemonkey修改站点的jQuery代码

时间:2011-01-20 17:58:32

标签: jquery greasemonkey

如何使用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中?

3 个答案:

答案 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();