2015-02-14 15 views
7

Tôi có một ứng dụng web sử dụng thẻ HTML5 <audio> và vì một số lý do, trong khi nó hoạt động tốt trên Windows và Mac PC, nó không hoạt động trên iOS và Android . Dưới đây là một đoạn có liên quan của mã của tôi:Không thể tạo Thẻ âm thanh HTML5 hoạt động trên trình duyệt di động

Javascript:

var audioElement = document.querySelector('#audioplayer'); 
var source = document.querySelector('#mp3'); 
source.src = tokObject._url; 
audioElement.load(); 
audioElement.play(); 

HTML:

<center> 
    <audio id="audioplayer" style="width:480px;"> 
     <source id="mp3" src="random-placeholder" type="audio/mp3" /> 
    </audio> 
</center> 
+0

trình duyệt nào bạn đã thử nghiệm mã? i it opera nó sẽ không hoạt động –

+0

Chrome và Safari trên iOS và Android –

Trả lời

-2

Các bạn đã thử nó làm theo cách này:

var aud=new Audio(file.mp3); 
aud.play(); 
+0

Có, đã thử, dường như không giúp được .. –

3

Bạn thường có thể' t tự động phát tệp âm thanh hoặc video trên thiết bị di động, điều này thường là hạn chế của các hệ điều hành như Androi d và iOS để ngăn các trang web tải xuống các tệp phương tiện khổng lồ và tự động phát chúng.

Nếu mã như vậy được gọi từ bên trong trình xử lý nhấp chuột hoặc chạm, nó có thể hoạt động, nhưng không phải cách bạn hiện đang thực hiện.

Ngoài ra, phần tử <center> đã không còn được dùng nữa và bạn không nên sử dụng nó nữa.

+0

Mã đang được gọi từ một lần nhấp, có cách nào để bỏ qua hạn chế này không? –

+0

Không, không có cách nào để vượt qua giới hạn này, đó là điểm của nó. Nhưng, vì mã đang được gọi trên một sự kiện bấm, tôi ngạc nhiên rằng nó không hoạt động. Có lẽ thử loại bỏ .load() và xem nó có hoạt động không? –

+0

Cảm ơn Ian, tôi sẽ kiểm tra nó sớm để xem điều này có hữu ích không –

0

Không chắc chắn điều này có giúp ích hay không nhưng tôi đã thực hiện việc này thay thế và nó đã hiệu quả đối với tôi. Trong khi tôi không chơi một MP3, tôi đang nhận được một giọng nói để nhắc nhở người dùng thông qua một vòng lặp.

function speak(text) { 
var msg = new SpeechSynthesisUtterance(); 
var voices = speechSynthesis.getVoices(); 
msg.voice = voices[2]; 
msg.voiceURI = 'native'; 
msg.volume = 1; 
msg.rate = 1; 
msg.pitch = 1; 
msg.text = text; 
msg.lang = 'en-US'; 

speechSynthesis.speak(msg); 
} 

// chèn bit dưới cùng này để gọi hàm và nó sẽ đọc bằng giọng nói gốc điện thoại di động mà bạn nhập tức là .... phần còn lại hoạt động trên android chưa thử iphone.

nói ('nghỉ');

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