2011-06-14 55 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