2011-11-20 101 views
0

我正在研究一个greasemonkey脚本,但是str.replace函数不起作用。Javascript替换不起作用?

我试图禁用Google搜索的onmousedown功能,我的想法是通过用什么都替换它,它只会摆脱它。

以下是他们正在使用的代码。

<a href="http://www.google.com/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=5&amp;ved=0CFIQFjAE&amp;url=http%3A%2F%2Fswengineeringnotebook.blogspot.com%2F2010%2F01%2Fjquery-disable-default-event.html&amp;ei=O0nJTqeKOeaosQKMyoBk&amp;usg=AFQjCNHcR98HxCj8kdeVLlBiADbelsvEgw" class="l" onmousedown="return rwt(this,'','','','5','AFQjCNHcR98HxCj8kdeVLlBiADbelsvEgw','','0CFIQFjAE')">My Software Engineering Notebook: <em>JQuery Disable Default</em> Event</a> 

正如你所看到的,他们已经在他们的链接中获得了onmousedown。

这是我用来摆脱它。

$('body').text().replace(/onmousedown=\"return rwt\(.*?\)\"/gi, ""); 

我也试着用“return false”重新定义了rwt函数。但这似乎也没有效果。

关于如何做到这一点的任何想法将不胜感激。

谢谢。

+1

所以你想摆脱某些'onmousedown'属性?相信我,你不想序列化DOM来做到这一点。为了操纵DOM,您可以使用...以及... DOM操作函数。 –

+0

然后你会推荐什么? –

+0

古斯塔夫提出的解决方案。 –

回答

2

我不知道如果我得到你的问题,但是当你标记jQuery和要删除onmousedown事件属性,我会做:

$("a").removeAttr('onmousedown'); 

如果它不工作,也许你可以试试解除绑定:

$("a").unbind('mousedown'); 
+0

第一个工作...第二个不工作('.unbind()'只适用于与.bind()'...绑定的处理程序或像.mousedown()这样的简写方法)。 –

+0

这很好。谢谢:)不知道关于removeAttr。我会将它标记为当它让我回答! –

+0

只是为了完成它:'replace'函数不会替代var的引用。所以,'text.replace('a','b');''替换了b,但是'text'var仍然没有变化。如果你需要修改'text',你需要执行'text = text.replace('a','b');'' – gustavotkg