2011-01-20 77 views
1

如何用Greasemonkey修改或覆盖站点的jQuery代码。 jQuery库已由站点加载,jQuery自定义代码是我想要更改/修改的。我如何用Greasemonkey覆盖它?用Greasemonkey修改站点的jQuery代码

比如我想重写此代码(通过网站书面):

$('.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(); 
}); 

具体在哪里你把重写代码的userscript,并将其包装在document.ready中?

+0

我想这是题外话。你在问如何使用浏览器插件,而不是你需要执行你正在寻找的特定操作的jQuery。 – Will 2011-01-20 18:09:23

+0

这是关于jQuery和greasemonkey相关的,那是不是主题? – 2011-01-20 18:47:12

回答

1

如果你要解除绑定悬停事件,然后用你的重新绑定呢?

$('.side-nav-flyout').unbind('hover').hover(function() { 
    $(this).children('ul').show(); 
}, function() { 
    $(this).children('ul').hide(); 
}); 
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(); 
+0

我知道jquery/greasemonkey是如何工作的,但我想覆盖当前正在制作的jquery调用。我在哪里放置代码? – 2011-01-20 18:41:45

1

如果你没事具有完全重挫页面的.fadeIn().fadeOut()方法,您可以始终以“蛮力”的方法:

unsafeWindow.$.fn.fadeIn = unsafeWindow.$.fn.show; 
unsafeWindow.$.fn.fadeOut = unsafeWindow.$.fn.hide;