用Javascript播放音频文件
我正在尝试用js播放音频文件。我做错了什么? 脚本在某些事件后自动停止,这些事件100%正常工作,现在我只想在脚本停止后添加一个声音 以下是中的代码:用Javascript播放音频文件,javascript,audio,Javascript,Audio,我正在尝试用js播放音频文件。我做错了什么? 脚本在某些事件后自动停止,这些事件100%正常工作,现在我只想在脚本停止后添加一个声音 以下是中的代码: function stop() { stop_flag = true; var audio = new Audio('play.mp3'); audio.play(); } 下面是完整的script.js函数位于底部 chrome.runtime.onMessage.addListener(function(messag
function stop() {
stop_flag = true;
var audio = new Audio('play.mp3');
audio.play();
}
下面是完整的script.js
函数位于底部
chrome.runtime.onMessage.addListener(function(message) {
if (message.action == "init") {
init(message.options.divider, message.options.delay, message.options.maxLosses);
}
if (message.action == "stop") {
stop();
}
});
var stop_flag;
function init(divider, delay, maxLosses) {
var $table = $('table.dice_table').last();
var lastBetNumber;
var lastBetValue;
var lastProfit;
var losses = 0;
stop_flag = false;
loop_start();
function loop_start() {
lastBetNumber = getLastBetNumber();
var betValue = (getCurrentBalance() / divider).toFixed(9);
//var betValue = (getCurrentBalance() / divider);
lastBetValue = betValue;
$("input.bet").val(betValue);
play();
setTimeout(loop, delay);
}
function loop() {
if (stop_flag)
return;
waitForTableChange()
.then(roll)
.catch(loop_start);
function roll() {
//only if the last bet has changed \/
lastBetNumber = getLastBetNumber();
lastProfit = $table.children('tbody').children('tr').first().children('td').last().text()[0];
changeBet();
if (losses >= maxLosses)
return;
play();
setTimeout(loop, delay);
}
}
function waitForTableChange() {
return new Promise(function(resolve, reject) {
var n = 0;
attempt();
function attempt() {
n++;
if (n >= 100) {
reject();
return;
}
if (getLastBetNumber() == lastBetNumber) {
setTimeout(attempt, 100);
return;
}
resolve();
}
});
}
function changeBet() {
var newBetValue;
if (lastProfit == "-") {
losses++;
newBetValue = lastBetValue * 2;
} else {
losses = 0;
newBetValue = (getCurrentBalance() / divider).toFixed(9);
}
lastBetValue = newBetValue;
$("input.bet").val(newBetValue);
}
function play() {
$('input.clDicePlay').first()[0].click();
}
function getLastBetNumber() {
return $table.children('tbody').children('tr').first().children('td').first().text();
}
function getCurrentBalance() {
return $('.dice_select .chosen-single span').text().split('- ')[1].split(' ')[0];
}
}
function stop() {
var audio = new Audio('play.mp3');
stop_flag = true;
audio.play();
}
问题是您在函数
stop()
中设置了audio
,这使该函数成为本地函数。一旦执行了一个函数,所有本地var
s将被销毁。您需要使用全局作用域使对象保持活动状态
例如:
//在全局范围内设置“音频”
var audio=新音频('/path/to/default.mp3');
//创建播放/暂停按钮
功能播放暂停(e){
//注意:音频来自gloabl示波器
如果(this.textContent=='Play'){
音频播放();
this.textContent='Pause';
}否则{
audio.pause();
this.textcont='播放';
}
}
window.onload=函数(){
var a=document.getElementById('func');
a、 addEventListener('click',playPause,false);
}
Play
脚本在某些事件后自动停止,并且100%正常工作,现在我要做的就是在它停止后添加一个声音。PS:如果使用像https://example.com/play.mp3
。。。