我正在创建一个浏览器扩展,通过向用户的Twitter时间轴中的每条推文行添加一些链接来修改Twitter时间轴。Twitter时间轴DOM操纵 - 否定Onclick事件处理程序
通常,只要点击了推文行,Twitter就会弹出右侧面板提供更多信息,除了用户点击如转推,回复等链接时。我不确定Twitter的JavaScript应用于什么这些链接可以防止它们导致面板被打开,但我想要做类似的事情。我曾尝试检查Google Chrome中的元素,但未公开事件处理程序。
有什么建议吗?
我正在创建一个浏览器扩展,通过向用户的Twitter时间轴中的每条推文行添加一些链接来修改Twitter时间轴。Twitter时间轴DOM操纵 - 否定Onclick事件处理程序
通常,只要点击了推文行,Twitter就会弹出右侧面板提供更多信息,除了用户点击如转推,回复等链接时。我不确定Twitter的JavaScript应用于什么这些链接可以防止它们导致面板被打开,但我想要做类似的事情。我曾尝试检查Google Chrome中的元素,但未公开事件处理程序。
有什么建议吗?
我通过停止事件传播解决我的问题。这阻止了事件传播到容器元素的事件处理程序。
使用jQuery我能申请一个onclick处理程序,像这样:
$("#elementId").click(function(event) {
event.preventDefault();
event.stopPropagation();
// other actions
});
事件处理程序可能是通过脚本以编程方式添加的。您可以尝试删除事件处理程序(请参阅the docs),但克隆相关元素可能更容易,然后隐藏原始文件。有关信息,请参阅cloneNode文档。
没有任何样品的HTML,我真的不能给你一个很好的例子,但这里有一个通用的jsfiddle我扔在一起,说明这个概念:http://jsfiddle.net/sacCK/1/
我敢肯定,他们的脚本不添加事件处理程序,我插入的DOM元素。这是一个更大的问题,无论用户点击推文行将导致面板打开(除了他们的链接)。我想复制他们的链接功能的方式,使他们不会导致面板打开时单击。我认为事件处理程序位于外部容器(包含所有tweet文本等),因此可能会调用事件处理程序,但链接上的处理程序会阻止打开面板。 – Kyle 2011-06-14 20:46:01
我建议你看看非jQuery的方式来做到这一点 - 除非你已经计划在你的扩展中使用jQuery。我不会。 :) – 2011-06-14 22:27:30
@Chris:jQuery在整个扩展中用于几件事情。你说对了,这个案件并不能真正保证它的使用。 – Kyle 2011-06-15 03:39:07
一定要接受你自己的答案,现在已经过了足够的时间。 – arcain 2011-06-20 05:38:49