簡體   English   中英

e.target僅適用於鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM