[英]e.target is working only on links
我是一個菜鳥,我正在開發一個chrome插件,它提供了有關網頁中點擊的元素的信息,
它工作正常,但問題是e.target僅適用於鏈接和輸入框,但是當我點擊某些文本時它沒有做任何事情,它是空白的[預期:div的id/class/etc
文字存在]
這是我的代碼(請不要標記我,因為我真的很新):
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信息,同樣等等。
因為(基於你的另一個問題 )似乎正確地注冊了監聽器(例如,在加載DOM之后,我看到的唯一問題是你正在調用e.target.name.toString();
它僅適用於具有name
屬性集的元素(不僅適用於鏈接或輸入,還適用於具有name
屬性的任何元素)。 對於沒有name
元素,將引發異常,因為您正在調用undefined
方法toString
(當缺少name
屬性時, e.target.name
等於undefined
)。
(注意,這是不與殼體className
,因為className
指的是元件特性(不直接的class
attibute其默認值為當所述空字符串class
屬性丟失。)
只需刪除.toString()
部分就可以了:
var dom_name = e.target.name;
根據您以后如何使用該var,您可能希望添加一個檢查並將其設置為空字符串(如果未定義):
var dom_name = (e.target.name !== undefined) ? e.target.name : '';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.