سؤال

أنا أعمل على نص Greasemonkey لـ Gmail حيث أحتاج إلى إنشاء نسخة من رابط "صندوق الوارد". باستخدام Clonenode يعمل بشكل جيد ، لكنني أعتقد أن هناك حدثًا onclick يتم إرفاقه به في وقت التشغيل. لذلك ، هذا سؤال من جزأين: 1. هل هناك طريقة لمعرفة الأحداث المرتبطة بعقدة؟ 2. هل هناك طريقة لنسخ تلك الأحداث أيضًا؟ كان أقرب شيء وجدته هو jQuery ، وأنا لست مستعدًا للذهاب إلى هناك بعد. شكرًا!

هل كانت مفيدة؟

المحلول

  1. ليس ما لم يتم تعيينه باستخدام onclick ميزة على العنصر.
  2. ليس بشكل موثوق (يمكنك نسخ 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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top