Ваш вопрос короткий, но на самом деле нужно сказать много вещей.
Во-первых, всегда приятно использовать VanillaJS ™ вместо jQuery, когда речь идет об изменениях политики, потому чтоСтандарты немедленно распространяются на обычный JavaScript, тогда как для распространения изменения требуется сторонние библиотеки, такие как jQuery.Хорошая вещь с простым JavaScript состоит в том, что вы можете создать аудиообъект с new Audio(<source>)
- не нужно никаких HTML-элементов!Ниже приведен пример:
const audio = new Audio("https://interactive-examples.mdn.mozilla.net/media/examples/t-rex-roar.mp3");
// wait for the DOM to load
window.onload = () => {
// play audio on click
const clickToPlay = document.querySelector('#click-to-play');
clickToPlay.onclick = () => audio.play();
// play/pause audio on hover
const hoverToPlay = document.querySelector('#hover-to-play');
hoverToPlay.onmouseover = () => audio.play();
hoverToPlay.onmouseout = () => audio.pause();
}
/* just some styling, not useful for the solution */
#click-to-play {
padding: 1em;
background-color: steelblue;
}
#click-to-play:hover {
cursor: pointer;
}
#hover-to-play {
padding: 1em;
background-color: lightblue;
}
#hover-to-play:hover {
cursor: crosshair;
}
<div id="click-to-play">
Click to play
</div>
<div id="hover-to-play">
Hover in to play, hover out to pause
</div>
Отлично!За исключением, как вы и предполагали, автозапуска при наведении, который может быть заблокирован обновлением автозапуска 2017 года в Chrome .
Но это не обязательно плохо.Это обновление было сделано для улучшения взаимодействия с пользователем.Если вы пытаетесь найти способы, как обойти это, вы делаете это неправильно;) В обновлении указывается, что автоигра со звуком разрешена, если пользователь взаимодействовал (например, с помощью щелчка) .Поэтому при проектировании своего веб-сайта убедитесь, что пользователь щелкает где-то на вашей странице до появления автозапуска .Вот пример с двумя шагами , нажмите для авторизации, наведите курсор мыши, чтобы воспроизвести опыт пользователя:
const audio = new Audio('https://interactive-examples.mdn.mozilla.net/media/examples/t-rex-roar.mp3');
window.onload = () => {
const clickToAuthorize = document.querySelector('#click-to-authorize');
const hoverToPlay = document.querySelector('#hover-to-play');
clickToAuthorize.onclick = () => {
hoverToPlay.style.display = 'block';
}
hoverToPlay.onmouseover = () => audio.play();
hoverToPlay.onmouseout = () => audio.pause();
}
#click-to-authorize {
padding: 1em;
background-color: steelblue;
}
#click-to-authorize:hover {
cursor: pointer;
}
#hover-to-play {
padding: 1em;
background-color: lightblue;
display: none;
}
#hover-to-play:hover {
cursor: crosshair;
}
<div id="click-to-authorize">
Click if you want to hear a T-Rex roar!
</div>
<div id="hover-to-play">
Hover to play/pause
</div>