JavaScript Clonenode مع الأحداث
-
03-07-2019 - |
سؤال
أنا أعمل على نص Greasemonkey لـ Gmail حيث أحتاج إلى إنشاء نسخة من رابط "صندوق الوارد". باستخدام Clonenode يعمل بشكل جيد ، لكنني أعتقد أن هناك حدثًا onclick يتم إرفاقه به في وقت التشغيل. لذلك ، هذا سؤال من جزأين: 1. هل هناك طريقة لمعرفة الأحداث المرتبطة بعقدة؟ 2. هل هناك طريقة لنسخ تلك الأحداث أيضًا؟ كان أقرب شيء وجدته هو jQuery ، وأنا لست مستعدًا للذهاب إلى هناك بعد. شكرًا!
المحلول
- ليس ما لم يتم تعيينه باستخدام
onclick
ميزة على العنصر. - ليس بشكل موثوق (يمكنك نسخ
onclick
السمة ، ولكن ما إذا كان ذلك سيستمر في العمل يعتمد على ما إذا كان قد تم استخدامه وما يفعله).
من الأفضل أن تضيف click
معالج ، ثم يؤدي إلى هذا الحدث على الأصل ... أو محاكاة السلوك بطريقة أخرى.
نصائح أخرى
أعتقد أنه يمكننا حل هذه الأشياء باستخدام هذه النظرية:
لدينا Nodelist في JS ، ودعا أيضا livelists. يمكننا التحقق من كلما يتغير طولها ، إضافة الأحداث المشتركة المطلوبة للعنصر الجديد في القائمة في (الطول 1).
ما أقول....
فيما يلي المثال باستخدام NodeList لإضافة الأحداث.
<body>
<div id="one" class="clones" style="background:red;width:100px;height:100px"></div>
</body>
<script>
//Selecor based live list [Advantage]
var nodeList = document.getElementsByClassName('clones')
//Common Function for nodelist
nodeList.addEvents = function(){
nodeList.item(nodeList.length-1).addEventListener('click',function(){
console.log(this.id);
});
}
nodeList.addEvents();
//Making Clone
var _clone = document.getElementsByTagName('div')[0].cloneNode(true);
//Changing Id
_clone.id="two"
document.body.appendChild(_clone);
nodeList.addEvents();
</script>