<!-- 全局音频播放器,由父窗口统一管理 -->
<audio id="masterAudio" style="display:none;"></audio>
<script>
// 提供给子页面调用:借用子页面的刷卡按键动作来激活父窗口的播放权限
window.unlockParentAudio = function () {
var audio = document.getElementById('masterAudio');
if (audio.__unlocked) return; // 已经解锁过就跳过
// 播放一段极短的静音,骗过浏览器
audio.src = "data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA";
audio.play().then(function () {
audio.__unlocked = true;
console.log("🎵 父窗口音频通道已解锁!");
}).catch(function (e) {
console.warn("父窗口解锁失败", e);
});
};
// 提供给子页面调用:播放报错声音
window.playParentVoice = function (text, lang) {
// 检查开关状态
if (localStorage.getItem('voiceAlert') === 'off') return;
var audio = document.getElementById('masterAudio');
var voiceName = (lang && lang.indexOf('zh') === 0) ? 'zh-CN-XiaoxiaoNeural' : 'vi-VN-HoaiMyNeural';
var url = 'https://api.streamelements.com/kappa/v2/speech?voice=' + voiceName + '&text=' + encodeURIComponent(text);
audio.src = url;
audio.play().catch(function (e) {
console.warn("父窗口播报被拦截:", e);
});
};
</script>
<script type="text/javascript">
// 获取当前语言(PVN 越南文,PSH 中文)
function getVoiceLang() {
return $("#<%= ddlLanguage.ClientID %>").val() === "PSH" ? "PSH" : "PVN";
}
// 多语言字典
function getVoiceText(key) {
var dict = {
PVN: {
on: "Nhắc nhở bằng giọng nói: Bật",
off: "Nhắc nhở bằng giọng nói: Tắt"
},
PSH: {
on: "語音提醒:開",
off: "語音提醒:關"
}
};
return dict[getVoiceLang()][key];
}
// 刷新图标颜色和文字
function refreshVoiceIcon() {
var isOff = localStorage.getItem('voiceAlert') === 'off';
$('#voiceIcon').css('color', isOff ? '#ccc' : ''); // 关闭时变灰
$('#voiceToggle').attr('title', isOff ? getVoiceText('off') : getVoiceText('on'));
}
$(function () {
refreshVoiceIcon();
$('#voiceToggle').on('click', function () {
var isOff = localStorage.getItem('voiceAlert') === 'off';
if (isOff) {
localStorage.setItem('voiceAlert', 'on'); // 打开
} else {
localStorage.setItem('voiceAlert', 'off'); // 关闭
var audio = document.getElementById('masterAudio');
if (audio) audio.pause(); // 关的时候立刻停掉正在读的声音
}
refreshVoiceIcon();
});
});
</script>
<!-- ========== 语音播报 ========== -->
<script type="text/javascript">
$(function () {
// 1. 监听按键(刷卡/扫码)和点击,顺便让父窗口激活权限
$(document).on('keydown click', function () {
if (window.parent && window.parent.unlockParentAudio) {
window.parent.unlockParentAudio();
}
});
// 2. 检查本页面的提示信息
var $msg = $('#<%= labMsg.ClientID %>');
var text = $msg.text().trim();
if (!text) return;
// 蓝色(成功)不播报
var color = ($msg.css('color') || '').toLowerCase().replace(/\s+/g, '');
if (color === 'rgb(0,0,255)' || color === '#0000ff' || color === 'blue') return;
// 3. 交给父窗口播报(★ 指定越南语:vi-VN)
if (window.parent && window.parent.playParentVoice) {
window.parent.playParentVoice(text, 'vi-VN');
}
});
</script>
<!-- ========== 语音播报结束 ========== -->