2012-08-03 41 views
10

Tôi có trang web một trang liệt kê một bộ sưu tập các trình phát âm thanh HTML5. Vấn đề là trang web đã trở nên chậm chạp vì các trình duyệt sau bắt đầu predownloading nội dung (mp3 và ogg)Làm thế nào để ngăn chặn âm thanh HTML5 từ tải xuống/phát trực tiếp khi tải?

Internet Explorer 
Google Chrome 
Firefox 
Safari 
(probably Opera) 

tôi sử dụng mã cơ bản để thực hiện các cầu thủ. Có cách nào tôi có thể ngăn các trình duyệt tải xuống các tệp âm thanh và chỉ hoạt động khi họ nhấp phát không?

<audio controls="controls" height="32" width="300" tabindex="0"> 
<source type="audio/mpeg" src="http://cdn.com/track.mp3"></source> 
<source type="audio/ogg" src="http://cdn.com/track.ogg"></source> 
</audio> 
+1

Tôi nghĩ chiều cao và chiều rộng của trình duyệt sẽ bị trống, do đó bạn có thể để trống, chỉ cần '

+0

@AlphaApp Cảm ơn FYI. – TheBlackBenzKid

Trả lời

21
<audio controls="controls" preload="none"> 
    <source src="song.ogg" type="audio/ogg" /> 
    <source src="song.mp3" type="audio/mpeg" /> 
    Your browser does not support the audio element. 
</audio> 

Note - preload="none" - có thể được sử dụng với Video HTML5 và AUDIO HTML5.

Thuộc tính tải trước được hỗ trợ trong tất cả các trình duyệt chính, ngoại trừ Internet Explorer và Opera.

+2

Cảm ơn bạn. Vì vậy, điều này ngăn các yếu tố HTML5 tự động tải xuống và tải trước tự động. Cảm kích điều đó. – TheBlackBenzKid

3

MSIE vẫn chiếm khoảng 30% lưu lượng truy cập web, vì vậy preload="none" chỉ là một giải pháp một phần. Trong một vài trang nơi tôi có vấn đề này, tôi thêm một kịch bản nhỏ để tiêu đề trang của tôi:

<script type="text/javascript"> 
function addAudio(t) { 
    var l=t.innerHTML.length; 
    var audioName=t.parentElement.id; 
    if(t.children.length==0) { 
    t.innerHTML=t.innerHTML+'&nbsp; &nbsp; <audio controls="controls"><source src="'+ 
     audioName+'.ogg" type="audio/ogg" /><source src="'+ 
     audioName+'.mp3" type="audio/mp3" /> No audio tag support</audio>'; 
    } 
} 
</script> 

và sau đó sử dụng DHMTL để tự động thêm thẻ âm thanh, ví dụ:

<li id="2_Lesson_1_Hello"><span onclick="addAudio(this)">Γεια σας</span></li> 

Điều này là định nghĩa một mục danh sách có chứa một khoảng văn bản. Khi người duyệt các lần nhấp trên văn bản được mở rộng, javascript sẽ kích hoạt và gắn thêm thẻ <audio>. Bạn có thể sử dụng thuộc tính onmouseover để thẻ âm thanh được thêm vào di chuột.

Thêm thuộc tính preload vào mã được tạo nếu bạn muốn. Đây là cách tiếp cận đơn giản, nhưng nếu bạn đang sử dụng jQuery trên trang web của mình, tôi lưu ý rằng điều này cung cấp các lựa chọn thay thế thanh lịch.

+0

Bạn có thể vui lòng đăng bài thay thế jQuery và giải thích đầy đủ mã và ý bạn là gì không? 1 cho nỗ lực này, điều này đặt tôi ra 'Γεια σας' mã này làm gì vv? – TheBlackBenzKid

+0

Tôi đã cập nhật câu trả lời của mình. Xin lỗi, tôi vừa lấy một dòng từ một trong các trang của tôi "Γεια σας" chỉ là một số dữ liệu ký tự trong ví dụ này (đó là tiếng Hy Lạp cho "hello"), giống như "Trình duyệt của bạn không hỗ trợ ..." là của bạn. Ví dụ jQuery là một Q & A khác nhau, và không thực sự là một cái gì đó mà tôi muốn bao gồm ở đây. Nó chỉ là tôi coi đây là sử dụng tiên tiến của javascript và không thực sự thích hợp trong trường hợp của bạn nếu bạn cần giải thích về thói quen hành động đơn giản này. – TerryE

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