اذهب إلى المحتوى

السؤال

نشر

لدي مكون واحد به فيديو يستخدم مكتبة videojs لتحميله. في هذا المكون ، أرسل حدثًا بعد 3 ثوانٍ لتمييز مقاطع الفيديو هذه على أنها تمت مشاهدتها باستخدام كود جافا سكريبت هذا: 

var player = videojs('yt-video')
        player.on('timeupdate', function() {        
            if(this.currentTime() > 3 ) {
                Livewire.emit('VideoViewed')
                this.off('timeupdate')
            }
        })

ثم أستمع إلى هذا الحدث داخل الفصل وأقوم بتحديث قاعدة البيانات، هذا يعمل بشكل جيد باستثناء مشكلة واحدة.

بعد تشغيل المكون للحدث ، يستمر تشغيل الفيديو ولكنه يُظهر زر التشغيل حتى يتم تشغيل الفيديو وإزالة جميع عناصر التحكم في الفيديو أيضًا و يُظهر هذا الخطأ في الطرفية:

Uncaught DOMException: Failed to execute 'replaceChild' on 'Node': The node to be replaced is not a child of this node.
    at t.<anonymous> (https://vjs.zencdn.net/7.10.2/video.min.js:19:51700)
    at t.<anonymous> (https://vjs.zencdn.net/7.10.2/video.min.js:12:25973)
    at https://vjs.zencdn.net/7.10.2/video.min.js:12:25749

 

Recommended Posts

  • 1
نشر

يبدو أن Livewire يكتشف أن العنصر الذي يحتوي على مشغل الفيديو قد تغير ويحاول استبداله.

عليك إضافة التوجيه wire:ignore للعُنصر الحاوي لعُنصر الفيديو أو عُنصر الفيديو نفسه:

<video class="video-js" wire:ignore>

تختلط الأمور على Livewire عندما يتم التلاعب بالصفحة بإستخدام شيفرات جافاسكربت خارجية دون علم Livewire بذلك، مُعظم المشاكل من هذا النوع يتم حلها بإضافة التوجيه او الخاصية "wire:ignore"

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...