2011-11-20 103 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