Rumah > Soal Jawab > teks badan
P粉7383463802023-08-21 10:33:30
Penyelesaian #1
Penyelesaian saya ialah mencipta iframe
<iframe src="audio/source.mp3" allow="autoplay" style="display:none" id="iframeAudio"> </iframe>
dan audio
teg untuk penyemak imbas bukan Chrome
<audio autoplay loop id="playAudio"> <source src="audio/source.mp3"> </audio>
dan dalam script
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); if (!isChrome){ $('#iframeAudio').remove() } else { $('#playAudio').remove() // 为了确保背景中不会有两个音频 }
Penyelesaian #2:
Menurut @Leonard, ada penyelesaian lain
Buat satu iframe
yang tidak memainkan apa-apa, hanya untuk mencetuskan automain pada muat pertama.
<iframe src="silence.mp3" allow="autoplay" id="audio" style="display: none"></iframe>
Sumber fail mp3 yang bagus: silence.mp3
Kemudian mainkan fail audio sebenar anda dengan mudah.
<audio id="player" autoplay loop> <source src="audio/source.mp3" type="audio/mp3"> </audio>
Secara peribadi lebih suka Penyelesaian #2 kerana ia adalah pendekatan yang lebih bersih dan kurang bergantung pada JavaScript.
Dikemas kini pada Ogos 2019
Penyelesaian #3
Sebagai pilihan lain kita boleh gunakan <embed>
Untuk Firefox
Nampaknya automain audio berfungsi jadi kami tidak memerlukan elemen <embed>
kerana ia akan mencipta dua audio berjalan pada masa yang sama.
// index.js let audioPlaying = true, backgroundAudio, browser; browser = navigator.userAgent.toLowerCase(); $('<audio class="audio1" src="audio.mp3" loop></audio>').prependTo('body'); if (!browser.indexOf('firefox') > -1) { $('<embed id="background-audio" src="audio.mp3" autostart="1"></embed>').prependTo('body'); backgroundAudio = setInterval(function() { $("#background-audio").remove(); $('<embed id="background-audio" src="audio.mp3"></embed>').prependTo('body'); }, 120000); // 120000是你的音频持续时间,本例中为2分钟。 }
Jika audio anda mempunyai acara togol, pastikan anda memadamkan elemen <embed>
yang anda buat.
NOTA: Selepas bertukar, ia akan bermula dari awal, dan memandangkan <embed>
已经被删除,<audio>
telah dialih keluar, elemen <audio>
kini akan dimainkan secara normal.
$(".toggle-audio").on('click', function(event) { audioPlaying = !audioPlaying; $("#background-audio").remove(); clearInterval(backgroundAudio); if (audioPlaying){ $(".audio1").play(); // 播放音频 } else { $(".audio1").pause(); }
Sekarang pastikan anda menyembunyikan <audio>
dan <audio>
和<embed>
elemen
audio, embed { position: absolute; z-index: -9999; }
Nota: diplay: none
dan visibility: hidden
akan menjadikan elemen diplay: none
和visibility: hidden
会使<embed>
tidak berfungsi.