2012-05-09 39 views
14

video yếu tố của html5 Tôi có một đơn giản thẻ html5 video:Làm thế nào tôi có thể nhận được chiều rộng và chiều cao

<video autobuffer="true" id="video" controls="true"> 
     <source src="some_url"></scource> 
    </video> 

Tôi chưa xác định chiều rộng rõ ràng và chiều cao trong thẻ video hoặc trong css, các wrapper video sẽ điều chỉnh theo kích thước video nguồn, vấn đề là, làm thế nào tôi có thể nhận được chiều rộng và chiều cao của video hiện tại? Tôi đã thử jquery

$('video').css('width'); 

nhưng nó trả lại cho tôi kích thước gốc: 300px

những gì tôi nhìn thấy trong trang là 800px!

Làm cách nào để giải quyết vấn đề này?

Trả lời

28
$(function() { 

    $("#video").bind("loadedmetadata", function() { 
     var width = this.videoWidth; 
     var height = this.videoHeight; 
     // ... 

    }); 

}); 
+1

Có vẻ như điều này sẽ chỉ hoạt động nếu bạn thêm hàm trước khi video được tải. Có cách tổng quát nào để nhận các giá trị này cho một video đang phát không? –

+1

Rất tiếc. Cảm ơn, mặc dù. –

+0

Điều gì ngăn bạn thêm video đó trước video của bạn? Nó chỉ ngồi đó lắng nghe sự kiện loadmetadata. – Neil

0

Chỉ cần phát hiện ra rằng chúng ta có thể có được chiều rộng video và chiều cao như:

$("#video").innerHeight(); 
$("#video").innerWidth(); 

Hai chức năng được tiếp xúc bởi jQuery.

Một lý do khác khiến jQuery đá !!!

+1

Um, theo [tài liệu] (https://api.jquery.com/innerwidth/), 'innerWidth()' sẽ 'Nhận chiều rộng bên trong được tính toán hiện tại (bao gồm đệm nhưng không biên giới)'. Cấp, hầu hết các video không sử dụng đệm, nhưng bạn có thể dễ dàng nhận được kích thước của phần tử video với 'video.width' và' video.height'. Điều đó sẽ cho giá trị thực sự (nghĩa là không có đệm), đơn giản hơn và không sử dụng jQuery. Tuy nhiên, điều quan trọng là phải phân biệt giữa kích thước của phần tử video và kích thước gốc của video. Câu trả lời này và câu trả lời nào ở trên là hoàn toàn khác. – Nateowami

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