e.target仅适用于链接

时间:2013-12-09 08:04:11

标签: javascript jquery html css google-chrome-extension

我是一个菜鸟,我正在开发一个chrome插件,它提供了有关网页中点击的元素的信息,

它工作正常,但问题是e.target仅适用于链接和输入框,但是当我点击某些文本时它没有做任何事情,它是空白的[预期:id/class/etc的文本存在的div]

这是我的代码(请不要标记我,因为我真的很新):

document.addEventListener("click", function (e) {
    var dom_id    = e.target.getAttribute("id");
    var dom_name  = e.target.name.toString();
    var dom_class = e.target.className.toString();
    var dom_html  = e.target.innerHTML;
    var dom_href  = e.target.getAttribute("href");
    var dom_text  = e.target.text;
    var dom_el    = e.target.tagName;
    var dom_src   = e.target.src;
}, false);

我想要的只是当我点击div时,我应该得到div信息,span应该给出span信息,等等。

1 个答案:

答案 0 :(得分:2)

问题

由于(基于你的 another question )似乎侦听器已正确注册(例如,在加载DOM之后,我看到的唯一问题是你正在调用{ {1}}。

解释

它仅适用于设置了e.target.name.toString();属性的元素(不仅适用于链接或输入,还适用于具有name属性的任何元素)。对于没有name的元素,将引发异常,因为当name调用toString的方法undefinede.target.name等于undefined }属性丢失了。) (请注意name不是这种情况,因为className引用了elements属性(不是直接className属性,而class属于class时的默认值缺少1}}属性。)

解决方案

只需删除.toString()部分,它就会起作用:

var dom_name = e.target.name;

<子> 根据您以后如何使用该var,您可能需要添加一个检查并将其设置为空字符串(如果未定义):
var dom_name = (e.target.name !== undefined) ? e.target.name : '';