我是一个菜鸟,我正在开发一个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信息,等等。
答案 0 :(得分:2)
由于(基于你的 another question )似乎侦听器已正确注册(例如,在加载DOM之后,我看到的唯一问题是你正在调用{ {1}}。
它仅适用于设置了e.target.name.toString();
属性的元素(不仅适用于链接或输入,还适用于具有name
属性的任何元素)。对于没有name
的元素,将引发异常,因为当name
调用toString
的方法undefined
时e.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 : '';
子>