var links = document.body.querySelectorAll("p.sourcelinks a.individual_source_link");
for(var i=0;i<links.length;i++)
{
links[i].onclick = null;
}
是我當前的代碼,但它不會刪除onclick事件。我不知道他們會是什麼,因爲這是一個grepmonkey腳本。刪除元素的所有onclick事件
var links = document.body.querySelectorAll("p.sourcelinks a.individual_source_link");
for(var i=0;i<links.length;i++)
{
links[i].onclick = null;
}
是我當前的代碼,但它不會刪除onclick事件。我不知道他們會是什麼,因爲這是一個grepmonkey腳本。刪除元素的所有onclick事件
您的代碼只處理element.onclick案件添加的事件。添加addEventListener(適用於符合標準的瀏覽器)和attachEvent(適用於IE)的事件是什麼?
您需要使用removeEventListener和detachEvent刪除事件以及將.onclick設置爲null。然後你的基地將被覆蓋。
我猜你的href
或onClick
上的<a>
鏈接上調用JavaScript函數。
您可以通過刪除href
標記,onClick
事件或在這種情況下刪除它們中的任何一個來刪除其中的任何一個。
for(var i=0;i<links.length;i++)
{
links[i].href='#';
links[i].onclick = '';
}
似乎沒有工作http://tv.blinkx.com/show/penn-teller-bullshit/Uy5MaFV5qcfgsDINw-hR0_Xfvuo#s3e6 – Steven 2011-02-07 08:27:31
該代碼不起作用because of GM's sandbox. links
is in an XPCNativeWrapper。
爲了解決這個問題使用setAttribute()
,就像這樣:
var links = document.body.querySelectorAll("p.sourcelinks a.individual_source_link");
for(var i=0;i<links.length;i++)
{
links[i].setAttribute ("onclick", null);
}
注意,設置其他的方式是點擊處理程序,將需要清除其他方式(removeEventListener()
,例如)。
這篇文章很可能是有用的:
http://www.computerhowtoguy.com/how-to-use-the-jquery-unbind-method-on-all-child-elements/
一部分尤其是遞歸函數,消除所有點擊事件。請記住,如果點擊事件是使用jQuery創建的,jQuery將刪除點擊事件。文章中給出的函數將刪除使用jQuery創建的那些功能和那些沒有創建的功能。給出的函數是這樣的:
function RecursiveUnbind($jElement) {
// remove this element's and all of its children's click events
$jElement.unbind();
$jElement.removeAttr('onclick');
$jElement.children().each(function() {
RecursiveUnbind($(this));
});
}
你會調用該函數是這樣的:
RecursiveUnbind($('#container'));
這個功能需要一個jQuery對象參數,但你可以很容易地改變它傳遞一個字符串作爲名稱元素的ID,或者你認爲是最好的。
雖然這隻能解決點擊事件,但您可以輕鬆修改它以處理其他或全部事件。
「是我目前的代碼(什麼),但它不會刪除onclick事件。」 ! – 2011-02-07 08:02:55
「這是我目前的代碼,...」我認爲 – w35l3y 2011-02-12 03:14:41