2011-07-28 56 views
5

Tôi đang cố tìm nạp và in các thuộc tính chiều rộng và chiều cao từ video bằng javascript đơn giản, nhưng vì một lý do nào đó mà tôi không quản lý.Chiều cao và chiều rộng của video HTML5 thông qua javascript

Đây là javascript

video = document.getElementsByTagName("video")[1]; 
span1 = document.getElementById("dimensions"); 
span1.innerHTML = video.videoWidth + " x " + video.videoHeight; 

và đây là mã html5 mà nó ảnh hưởng đến (đây là thẻ video thứ hai trong cấu trúc html)

<figure> 
<video controls> 
<source src="video.webm" type="video/webm"> 
</video> 
</figure> 
<p> 
Dimensions: <span id="dimensions"></span> 
</p> 

Cảm ơn rất nhiều, tôi là một người mới bắt đầu nên nhẹ nhàng với tôi.

+0

Video của bạn có phát không tốt? –

+0

video ở định dạng webm và video chỉ phát trong Chrome, hiện tại là – 3mpetri

Trả lời

11

Chỉ mục của bạn, dựa trên đánh dấu của bạn, sẽ không trả về phần tử bạn muốn. Chỉ số này là zero-based như danh sách nút là mảng giống như và bắt đầu lập chỉ mục tại 0.

var video = document.getElementsByTagName("video")[0]; 

Sửa: xin lỗi, không thấy bạn cho biết đây là thẻ video thứ hai. Trong trường hợp đó, tôi không chắc chắn, vì nó hoạt động cho tôi: http://jsfiddle.net/3wCYz/1/

Một điều bạn có thể muốn thử là đặt mã bạn sử dụng để lấy chiều rộng và chiều cao bên trong trình xử lý trên thẻ video của bạn sự kiện loadedmetadata:

video.addEventListener("loadedmetadata", dimensionFunction, false); 

nơi dimensionFunction là chức năng thực hiện những gì bạn đã làm để lấy thứ nguyên.

Điều này có nghĩa là đảm bảo siêu dữ liệu cho video đã tải xuống trước khi bạn cố gắng lấy.

+0

Tôi đã thêm người nghe, cũng đã thử với độ trễ 1 giây, nó chỉ hoạt động tốt trong Chrome, có thể do các trình duyệt khác không hỗ trợ webm? Nó hiển thị 0 x 0 trong Firefox với thời gian trễ, và không có gì với người nghe. Nhưng hey, tất cả tốt trong Chrome: D cảm ơn – 3mpetri

+0

@ 3mpetri Trong trường hợp đó, bạn nên di chuyển tập lệnh của mình bên dưới mã html. Hoặc làm cho kịch bản của bạn được thực thi bên trong sự kiện 'onload'. Tôi khuyên bạn không nên sử dụng chậm trễ. –

+1

Đồng ý về việc đặt nó bên trong sự kiện onload. Để có nó để chơi trên các trình duyệt khác, chỉ cần mã hóa nó cho mp4 và ogv và bạn sẽ có tất cả các trình duyệt hỗ trợ html5. Thật dễ dàng để thực hiện việc mã hóa bằng nhiều công cụ miễn phí khác nhau - tôi sử dụng Miro Converter: http://www.mirovideoconverter.com/ – kinakuta

Các vấn đề liên quan