javascript - 如何在javascript中播放声音?
问题描述
我在 python 中创建 websocket 服务器来处理通知事件。现在,我可以收到通知,问题是我无法播放声音,因为新的自动播放策略发生了变化,如果我使用 javascript 播放声音它会给我 domexception。请问有什么建议吗?
解决方案
据我所知,在 html-javascript 中播放声音很简单。像这个例子:https ://stackoverflow.com/a/18628124/7514010
但这取决于您的浏览器以及您如何加载和播放,所以问题是:
- 一些浏览器等到用户点击某些东西,然后让你玩它(找到它的方法)
- 在某些情况下,浏览器永远不会让你玩,直到地址使用 SSL(意味着你的 url 后面的HTTPS )
- 加载迟到所以播放迟到/甚至没有开始。
所以我通常这样做:
HTML
<audio id="notifysound" src="notify.mp3" autobuffer preload="auto" style="visibility:hidden;width:0px;height:0px;z-index:-1;"></audio>
JAVASCRIPT(一般)
var theSound = document.getElementById("notifysound");
theSound.play();
如果我想确保在我通知时播放它,最安全的是:
JAVASCRIPT(在你的情况下)
function notifyme(theTitle,theBody) {
theTitle=theTitle || 'Title';
theBody=theBody || "Hi. \nIt is notification!";
var theSound = document.getElementById("notifysound");
if ("Notification" in window && Notification) {
if (window.Notification.permission !== "granted") {
window.Notification.requestPermission().then((result) => {
if (result != 'denied') {
return notifyme(theTitle,theBody);
} else {
theSound.play();
}
});
} else {
theSound.play();
try {
var notification = new Notification(theTitle, {
icon: 'icon.png',
body: theBody
});
notification.onclick = function () {
window.focus();
};
}
catch(err) {
return;
}
}
} else {
theSound.play();
}
}
(只是希望它被播放。因为甚至可能音量或一些自定义使其失败。)
推荐阅读
- ios - UIPickerView 滚动到上一个项目时的奇怪行为
- asp.net-core - 如果 appsetings.json 中存在设置,为什么会忽略环境变量?
- javascript - 在表格行中不显示
- arrays - JSON 的语法 - 正文发布请求 - SWIFT4
- javascript - AWS Polly Javascript 开发工具包“ThrottlingException:超出速率”
- python - 如何创建免费送货功能?
- javascript - 使用单独的输入标签拖放多个文件
- swift - 将参数值传递给应用程序/播放商店下载的链接
- python - 每次我调用它时都会从“源模块”中获取一个函数吗?
- javascript - React.js 可以 onChange 合成事件中断垃圾收集吗?