文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JS实现谷歌浏览器插件拷贝语音功能详解

2024-04-02 19:55

关注

介绍

相信前端的小伙伴对谷歌浏览器插件开发并不陌生,或许你会想到,当习得这个技能后最后又能做些什么呢?当然又很多,本期就带大家去实现一个插件,其具体作用就是,你可以在在网页上选择一段文本然后就会自动复制下来,同时,还可以自动完成语音朗读,这样你就可以不用看就可以了解到内容,而且也不用每次按Ctrl+C去复制啦~

正文

基础配置

众所周知,开发谷歌浏览器插件前先要去配置一下 manifest.json 文件,它是用于指定扩展插件应用名称、描述、图标、应用文件入口、权限等信息的。

{
    "name": "文本拷贝&语音朗读插件",
    "description":"在页面选中所需要复制、语音的文本,将会完成自动复制,且会帮你语音说出所选的内容",
    "version": "0.1",
    "manifest_version": 3,
    "background": {
        "service_worker": "background.js"
    },
    "action": {
        "default_icon": {
            "16": "/assets/favicon-16x16.png",
            "48": "/assets/favicon-48x48.png"
        }
    },
    "icons": {
        "16": "/assets/favicon-16x16.png",
        "48": "/assets/favicon-48x48.png"
    },
    "permissions": [
        "tts",
        "clipboardRead",
        "clipboardWrite"
    ],
    "content_scripts":[{
        "js":["page.js"],
        "matches":["http:/*"]
    }]
}

这里我们简单说明一下以上配置都做了什么吧:首先我们起好扩展应用的名字和描述。然后定义了版本好,因为目前为纯自娱自乐式的demo,所以给一个v0.1版本吧。

mainfest版本设置为3,所以后面的 action 插件页面展示和 icons 插件图标要分开写在下面,如果mainfest设置为2的话,则需要写 browser_action 来代替 action ,同时,要把 icons 并入其中。mainfest版本2与3细碎的差异其实还是比较多的,具体可以查看官方的文档来再来尝试。

另外,指定background的脚本,因为它是 Chrome 插件比较重要的一个部分,也是Chrome 插件生命周期最长的一个组件。background 的生命周期在 Chrome 启动后,启用的插件会被启动,background.js 就会被执行。我们后面写的功能调用都会经过它之手来发出。

content_scripts 顾名思义其目的就是要写入页面将要执行那个脚本文件。在这里我们就给它写一个 page.js 后面我们的业务层面都将从头入手。

当然,最关键的是我们要在 permissions 开启拷贝和语音朗读的权限,然后我们才可以顺畅的使用Chrome 提供的API来完成这些功能。其中 tts 表示语音朗读的权限,而后面那俩则是拷贝的读写权限。

好了准备工作都完成了,接下来就开始搞事情~

获取内容

刚才说道我们的目的是选中网页中的文本内容来完成再做拷贝和朗读任务的,那有什么办法能快速获取到这些内容呢?当然有办法,就是用 window.getSelection 方法来返回一个 Selection 对象,再对这个 Selection 里就是你所选中的文本信息了,可以直接使用 toString 方法来读到。

// page.js
document.addEventListener("mouseup", e => {
    // 获取内容
    const txt = window.getSelection().toString()
    if(txt == "") return;
    // 拷贝文本
    document.execCommand('copy')
})

语音朗读

语音朗读我们就要借助 background.js 来完成,所以,我们在 chrome.runtime 先发出一个消息出去。

// page.js
document.addEventListener("mouseup", e => {
    // ...
    // 发送语音朗读消息
    chrome.runtime.sendMessage({
        type: "word",
        value: txt,
    }, res => {
        console.log(res)
    })
})

然后在 background.js 中接收到这个消息,在回调函数里就可以用 tts.speak 方法读出我们所选中的内容了,非常的简单。

// background.js
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    chrome.tts.speak(request.value)
    sendResponse({
        ...request,
        msg: "success",
    })
    console.log(chrome.tts)
})

结语

最后你可把刚才的文件夹导入到扩展程序里,一个属于你自己的小工具就完成了,当然本篇也是用一个小案例来抛砖引玉,希望你可以联想到更多的业务需求来做一款真正好用的浏览器插件,还有更多未知好玩的API等你去发现和使用。

以上就是JS实现谷歌浏览器插件拷贝语音功能详解的详细内容,更多关于JS谷歌浏览器插件拷贝语音的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-前端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯