html5使用speech synthesis实现文本朗读 html5使用语音合成API的示例

说实话,SpeechSynthesisAPI 相当有趣。
我在制作阅读辅助工具时经常使用它。
我记得当时测试了几个浏览器。
Chrome和Edge一开始还可以,Firefox也可以用。
不过,Safari 中的中文语音支持有点尴尬,可能需要手动下载语音包才能使用。

以基础阅读为例。
我有一个客户,非常无耻,坚持用女声读公司简介。
此时我将音调参数调整为0.8 左右,然后将速度调整为1 .2 声音听起来很轻,老板听着还看了两眼。
然而,这件事有一个缺陷。
如果浏览器没有安装相应的语言包,比如中文语音,则可以说默认的英文女声。
我当时差点被老板骂了。

最有趣的是投票选择。
我之前使用的时候遇到过一个坑。
记得刚开始写代码的时候直接用getVoices获取语音列表却发现页面一加载就报错。
后来查资料发现需要监听onvoicechanged事件。
就像等外卖一样。
你直接去生男孩的家里,问他是否还在。
你必须等待送货员打电话说“到了”。

控制阅读部分更考验你的耐心。
有一次我写了一个demo,发现当用户点击暂停时浏览器会冻结。
后来我发现我在休息前并没有打断之前的阅读任务。
就像如果你同时按下两个遥控器,电视信号肯定会混乱。
因此,每次操作前必须使用中断来清空队列。
这个细节尤为重要。

至于兼容性,我建议你做一下兼容性测试。
一位使用旧版本Edge的用户直接崩溃,弹窗显示“您的浏览器不支持语音合成”。
说实话,当时我还挺尴尬的,因为这个功能在2 01 4 年就标配了,但用户年龄太大了,无法使用。
后来我添加了一个polyfill来模拟没有语音的点击事件。
虽然有点难看,但也比直接摔坏要好。

最后,有一点琐事:SpeechSynthesis.onvoicechanged 事件是异步的,有时会延迟 0.5 秒触发。
我有一个项目,用户单击朗读按钮,但声音在 0.5 秒后发出。
用户认为我的代码有问题。
后来我加了一个定时器,验证了onvoicechanged被触发了,然后才大声朗读。
这解决了问题。

这个东西用起来很实用,比如帮助视障人士阅读或者作为外语学习工具。
我给孩子做了一个英语学习网站,文字朗读,结合字幕效果非常好。
但是,请注意,某些浏览器可以在后台自动停止阅读,例如当用户切换到另一个选项卡时。
这就需要在代码中添加一句话。

总的来说,SpeechSynthesisAPI是个好东西,但需要注意细节。
投票列表必须异步加载,控制方法要正确,兼容性要好。
别像我一样。
打字一晚上,用户用完就会崩溃。
这是一种损失。

HTML5网页如何实现粘贴功能 HTML5网页剪贴板数据的读取方法

直接上干货。
HTML5 粘贴功能的核心是ClipboardAPI。

看正文之前我们先聊聊。
只需使用 readText 即可。
异步函数pasteText() { try { const text = wait navigator.clipboard.readText();控制台.log(文本); } catch(err) { console.error('读取失败', err); }
处理多媒体内容有点复杂。
使用 read() 返回 ClipboardItem 数组。
异步函数pasteMedia() { try { const items = wait navigator.clipboard.read(); for(item of items) { if(item.types.includes('text/')) { const Blob = wait item.getType('text/'); } const Text = 等待 Blob.text();控制台.log(文本); } } } catch(err) { console.error('读取失败', err); }
授权是关键。
使用 navigator.permissions.query。
异步函数 checkPermission() { const status = wait navigator.permissions.query({ name: 'clipboard-read' }); if(status.state === '已授予') { console.log('已授予权限'); } else if(status.state === '提示') { console.log('等待用户点头'); }
安全注意事项三点。
第一个必须由用户交互触发。
您可以使用第二个 HTTPS 环境。
第三,您需要降级旧浏览器。
document.addEventListener('paste', (event) => { if(navigator.clipboard) { navigator.clipboard.readText().then(text => console.log(text)); } else { const ClipboardData = event.clipboardData || window.clipboardData; console.log(clipboardData.getData('text')); } } )
如何在页面中插入内容?例如,使用 img.src = URL.createObjectURL(blob)。
或者文本内容+=文本。

尝试一下。
注意权限问题。

html5怎么发音HTML5怎么读

HTML5 的读音是直接读“HTML五”。
是的,就是这么简单。

至于“商业”工作类别,您列出的确实是主流:
1 B2 C(企业对客户):企业直接向个人消费者销售产品,例如销售衣服和零食的淘宝和京东。
这是最常见的。
2 、B2 B(Business-to-Business):是企业之间的生意,比如阿里巴巴找供应商购买原材料,或者企业购买软件服务等,这个链条比较长。
3 . C2 C(客户对客户):个人向个人出售东西。
闲鱼、转转等平台都是典型的C2 C平台。
4 . B2 G(企业对政府):您提到了这一点,但解释中似乎并不完全正确。
通常指与政府部门打交道的企业,比如招投标、采购政府云服务等。
你提到的“BootToGecko”是Mozilla浏览器引擎,与业务分类无关,所以我很困惑。
5 . EDI(电子数据交换):这是一项古老的技术,使用标准格式在计算机系统之间发送订单和发票等业务文档。
如今,大部分已经演变成API接口或者云平台对接,但确实是一种重要的初始业务格式化方式。

你提到的品类基本涵盖了主要的电商模式。
目前B2 B和B2 C是最核心的。
C2 C在二手和拍卖领域非常流行。
B2 G非常专业,但也非常重要。
EDI 是一个技术术语,是早期数字商务的一部分。

无论如何,这取决于你。
选择哪个方向取决于你自己的兴趣和你的技能。