2011-06-14 54 views
2

我正在創建一個瀏覽器擴展,通過向用戶的Twitter時間軸中的每條推文行添加一些鏈接來修改Twitter時間軸。Twitter時間軸DOM操縱 - 否定Onclick事件處理程序

通常,只要點擊了推文行,Twitter就會彈出右側面板提供更多信息,除了用戶點擊如轉推,回覆等鏈接時。我不確定Twitter的JavaScript應用於什麼這些鏈接可以防止它們導致面板被打開,但我想要做類似的事情。我曾嘗試檢查Google Chrome中的元素,但未公開事件處理程序。

有什麼建議嗎?

回答

0

我通過停止事件傳播解決我的問題。這阻止了事件傳播到容器元素的事件處理程序。

使用jQuery我能申請一個onclick處理程序,像這樣:

$("#elementId").click(function(event) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    // other actions 
}); 
+0

我建議你看看非jQuery的方式來做到這一點 - 除非你已經計劃在你的擴展中使用jQuery。我不會。 :) – 2011-06-14 22:27:30

+0

@Chris:jQuery在整個擴展中用於幾件事情。你說對了,這個案件並不能真正保證它的使用。 – Kyle 2011-06-15 03:39:07

+0

一定要接受你自己的答案,現在已經過了足夠的時間。 – arcain 2011-06-20 05:38:49

0

事件處理程序可能是通過腳本以編程方式添加的。您可以嘗試刪除事件處理程序(請參閱the docs),但克隆相關元素可能更容易,然後隱藏原始文件。有關信息,請參閱cloneNode文檔。

沒有任何樣品的HTML,我真的不能給你一個很好的例子,但這裏有一個通用的jsfiddle我扔在一起,說明這個概念:http://jsfiddle.net/sacCK/1/

+0

我敢肯定,他們的腳本不添加事件處理程序,我插入的DOM元素。這是一個更大的問題,無論用戶點擊推文行將導致面板打開(除了他們的鏈接)。我想複製他們的鏈接功能的方式,使他們不會導致面板打開時單擊。我認爲事件處理程序位於外部容器(包含所有tweet文本等),因此可能會調用事件處理程序,但鏈接上的處理程序會阻止打開面板。 – Kyle 2011-06-14 20:46:01