Saya mencoba untuk mendapatkan dimensi video yang saya overlay ke halaman dengan JavaScript, namun itu mengembalikan dimensi gambar poster daripada video sebenarnya karena tampaknya dihitung sebelum video dimuat.
javascript
jquery
html5-video
Elliot
sumber
sumber
Jawaban:
Spec: https://html.spec.whatwg.org/multipage/embedded-content.html#the-video-element
sumber
Perlu diperhatikan bahwa solusi yang saat ini diterima di atas oleh Sime Vidas tidak benar-benar berfungsi di browser modern karena properti videoWidth dan videoHeight tidak disetel hingga peristiwa "dimuatmetadata" diaktifkan.
Jika Anda kebetulan membuat kueri untuk properti tersebut cukup jauh setelah elemen VIDEO dirender, ini terkadang berfungsi, tetapi dalam banyak kasus ini akan mengembalikan nilai 0 untuk kedua properti.
Untuk menjamin bahwa Anda mendapatkan nilai properti yang benar, Anda perlu melakukan sesuatu di sepanjang baris:
CATATAN: Saya tidak repot menghitung versi Internet Explorer pra-9 yang menggunakan attachEvent alih-alih addEventListener karena versi pra-9 dari browser tersebut tidak mendukung video HTML5.
sumber
loadedmetadata
diaktifkan. Saya baru saja melihatnya di Chromium 69. Mendengarkanloadeddata
adalah taruhan yang lebih aman.Fungsi siap pakai
Berikut adalah fungsi siap pakai yang mengembalikan dimensi video secara asinkron, tanpa mengubah apa pun di dokumen .
Berikut video yang digunakan untuk cuplikan tersebut jika Anda ingin melihatnya: Big Buck Bunny
sumber
Dengarkan
loadedmetadata
peristiwa yang dikirim ketika agen pengguna baru saja menentukan durasi dan dimensi sumber daya mediaBagian 4.7.10.16 Ringkasan acara
https://www.w3.org/TR/html5/semantics-embedded-content.html#eventdef-media-loadedmetadata
sumber
Beginilah cara melakukannya di Vue:
sumber
Di Vuejs saya menggunakan kode berikut di tag yang dipasang.
sumber