簡體   English   中英

JavaScript-檢測點擊事件是否觸發了DOMNodeInserted事件

[英]JavaScript - Detect whether a click event triggered a DOMNodeInserted event

我正在開發一個chrome擴展業務游戲化系統,該系統可跟蹤各種Web應用程序中的用戶,並跟蹤他們在應用程序中的進度,以確定用戶在工作場所中的排名。

我知道您可以使用以下方法跟蹤創建的元素:

window.addEventListener('DOMNodeInserted', function(e){
  console.log(e.target);
}, false);

但這可能很慢(在復雜的Web應用程序中明顯滯后),所以我只想檢測由於鼠標單擊而創建的元素(例如,在元素上)。

我剛剛在本地測試過:

<!DOCTYPE html>
<html>
<body>

    <div id="creator">Click me</div>

    <script>

        var click_event = 0;

        function add_element(e)
        {
            console.log(e);
            click_event = e;
            var div = document.createElement('div');
            div.innerHTML = "created";
            document.body.appendChild(div);
        }

        function element_created(e)
        {
            console.log(e);
            if(e == click_event)
            {
                console.log("SAME EVENT");
            }
        }

        document.getElementById('creator').addEventListener('click', add_element, false);
        window.addEventListener('DOMNodeInserted', element_created, false);

    </script>

</body>
</html>

希望事件是相同的,或者希望在檢查DOMNodeInserted事件時,我會找到某種從插入事件的屬性中提取原始click事件的方法。 但是,在將其鏈接到click事件的插入事件的屬性中,我什么都沒找到。

有沒有辦法使用JavaScript查找哪個事件觸發了DOMNodeInserted事件?

從JavaScript插入元素時使用自定義事件,但僅基於事件“ DOMNodeInserted”是不可能的,仍然可以在元素<div insertedwith="click"> "DOMNodeInserted" <div insertedwith="click">上使用自定義屬性,並檢查"DOMNodeInserted"處理程序是否為e.target具有該屬性。 無論如何檢查示例,希望對您有所幫助。

 console.clear(); function add_element_working(e) { var div = document.createElement('div'); div.onload = function() { console.log("Script loaded and ready"); }; div.innerHTML = "This is tracked with custom event"; event = document.createEvent("HTMLEvents"); event.initEvent("InsertedFromClick", true, true); document.body.appendChild(div); div.dispatchEvent(event); } function add_element_notworking(e) { var div = document.createElement('div'); div.innerHTML = "This is not tracked"; document.body.appendChild(div); } function element_created(e) { console.log("Inserted element not knowing who trigered"); console.log(e); } function element_created_custom(e) { console.log("Click inserted element traked"); console.log(e); } document.getElementById('creator').addEventListener('click', add_element_working, false); document.getElementById('creator2').addEventListener('click', add_element_notworking, false); window.addEventListener('DOMNodeInserted', element_created, false); window.addEventListener('InsertedFromClick', element_created_custom, false); 
 <div id="creator">Click me to check that tracked</div> <div id="creator2">Click me to check that I'm not tracked</div> <div>HTML</div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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