浏览器上的可见即可说

浏览器上的可见即可说
寒霜1、语音转文字
2、在页面上找到对应文字,模拟点击
export function VisibleCanBeSaid() {
var SpeechRecognition = SpeechRecognition || webkitSpeechRecognition;
let recognition;
let resultDisplay;
let clearResultTimer;
if (SpeechRecognition) {
// 创建语音识别实例
recognition = new SpeechRecognition();
recognition.lang = 'zh-CN'; // 设置识别语言为简体中文
recognition.continuous = false; // 设置为非持续监听
recognition.interimResults = false; // 不返回临时结果
// 创建一个div元素用于显示语音识别结果
resultDisplay = document.createElement('div');
resultDisplay.style.cssText = 'position: fixed; top: 0; left: 0; width: 100%; background: #ddd; padding: 10px; z-index: 1000; color: red;';
document.body.insertBefore(resultDisplay, document.body.firstChild); // 插入到body的最前面
// 重置结果显示函数
const resetResultDisplay = () => {
clearTimeout(clearResultTimer); // 清除现有的定时器
clearResultTimer = setTimeout(() => {
resultDisplay.textContent = ''; // 清空显示结果
// 清空后不立即开始监听,等待onend事件触发
}, 3000); // 设置定时器,3秒后清空结果
};
// 当语音识别开始时触发
recognition.onstart = function () {
console.log('语音识别开始');
};
// 当成功识别到语音命令时触发
recognition.onresult = function (event) {
let last = event.results[event.results.length - 1];
let command = last[0].transcript.trim();
// 更新显示结果的div元素
resultDisplay.textContent = `识别结果: ${command}`;
SimulateClick(command)
resetResultDisplay(); // 重置结果显示
};
// 当语音识别错误时触发
recognition.onerror = function (event) {
console.error('语音识别错误:', event.error);
};
// 当语音识别结束时触发
recognition.onend = function () {
console.log('语音识别结束');
// 清空显示结果后重新开始监听
recognition.start();
};
// 开始监听语音命令
recognition.start();
} else {
alert('您的浏览器不支持语音识别!');
}
}
export function SimulateClick(str) {
console.log(str, '结果')
// 等待页面加载完成
// document.addEventListener('DOMContentLoaded', function() {
// 获取页面中所有的data-voice-command元素
var voiceCommands = document.querySelectorAll('[data-voice-command]');
// 遍历这些元素
voiceCommands.forEach(function (element) {
console.log(element)
console.log(element.textContent)
console.log(element.textContent.trim())
// 检查元素的文本内容
if (element.textContent.trim() === str) {
// 如果文本内容等于'1',触发模拟点击事件
element.click();
}
});
// });
}