Chrome扩展开发实战:快速填充表单

这篇具有很好参考价值的文章主要介绍了Chrome扩展开发实战:快速填充表单。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,我是 dom 哥。我正在写关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星 Chrome扩展开发实战:快速填充表单

填表单是打工人经常面对的场景,作为一个前端,我经常开发一些PC端的页面,它们主要由表单和表格构成,而输入框又是表单里最常见的表单项。

接下来就试着做一个简单的小扩展,用于快速给表单里的输入框填充值。

🎉🎉🎉 已发布到 Chrome 应用商店啦,欢迎体验🙋‍♂️ https://chromewebstore.google.com/detail/mock-input/dpepgpdicolligjnmfekbphpjanlgefm

Mock.js

开始前请先让我介绍一下 Mock.js,这是一个模拟数据生成器,也正是这个库给了我灵感。

简而言之,Mock.js 可以生成各种各样数据类型的假数据。Chrome 扩展要做的事就是把生成的假数据插到输入框里。

Chrome扩展开发实战:快速填充表单

新建项目

从零开始新建一个项目,暂且命名为 mock-input-demo,在项目里新建一个 manifest.json 文件,此时项目目录结构应该如下:

mock-input-demo
└── manifest.json

manifest 先简单配置一下基础字段:

{
  "manifest_version": 3,
  "name": "Mock Input",
  "version": "0.1.0",

  "description": "给表单输入框快速填充假数据"
}

打开 chrome://extensions 扩展程序页面 加载已解压的扩展程序,选中 mock-input-demo,可以看到扩展出来了🎉

Chrome扩展开发实战:快速填充表单

自己设计了一个简单 logo 😬,配置上去

Chrome扩展开发实战:快速填充表单

+ "icons": {
+   "48": "logo48.png"
+ }

给输入框填充值的逻辑需要放在 content-script 里,新建一个 content-script.js 文件,在 manifest.json 中配置上:

+ "content-scripts": [
+   {
+     "js": ["content-script.js"],
+     "matches": ["<all_urls>"]
+   }
+ ]

此时项目的结构应该如下:

mock-input-demo
├── content-script.js
├── logo48.png
└── manifest.json

引入 Mock.js

由于项目未做工程化,所以 content-script.js 不支持 ES Modules,关于 Chrome 扩展项目的工程化,后面会单独讨论 🧐。这里暂且先从 jsDelivr 下载一份最新的 mock.min.js 放在项目里,直接放在 content-script 里注入:

- "js": ["content-script.js"],
+ "js": [
+   "mock.min.js",
+   "content-script.js",
+ ],

mock.min.js 会暴露全局变量 Mock,在 content-script.js 可以直接使用

填充输入框

万事具备,可以编写逻辑代码啦!

简单起见,这里只考虑 input 和 textarea 两种输入框类型,以下代码实现两种场景:

  • 按下 ctrl + 1-9 时填充 n 个汉字
  • 按下 alt + 1-9 时填充 n 位数字

核心代码如下:

const { Random } = Mock

window.addEventListener('keypress', e => {
  const { target } = e
  if (['INPUT', 'TEXTAREA'].includes(target.tagName)) {
    let insert
    let num
    if (e.code.startsWith('Digit')) {
      num = parseInt(e.code.replace('Digit', ''))
    }
    if (e.ctrlKey) {
      if (num != null) {
        insert = Random.ctitle(num)
      }
    } else if (e.altKey) {
      if (num > 0) {
        insert = Random.natural(Math.pow(10, num - 1), Math.pow(10, num) - 1)
      }
    }

    if (insert) {
      e.preventDefault()

      const before = target.value.substr(0, target.selectionStart)
      const after = target.value.substr(target.selectionEnd)
      target.value = before + insert + after
      const cursorPosition = (before + insert).length
      target.setSelectionRange(cursorPosition, cursorPosition)

      target.dispatchEvent(new InputEvent('input'))
    }
  }
})

好了,更新一下扩展,找个有输入框的页面,试试吧!

Chrome扩展开发实战:快速填充表单

文中设计的项目源码已放在 GitHub

觉得不错可以 点个小星星 Chrome扩展开发实战:快速填充表单 支持一下🌹文章来源地址https://www.toymoban.com/news/detail-760008.html

到了这里,关于Chrome扩展开发实战:快速填充表单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【chrome扩展开发】如何在项目中判断插件是否已安装

    由于安全限制,本文采取间接的方式实现 比如通过cookie、localStorage等进行状态存储 在 background.js 中进行安装、卸载事件监听 Ps: management 权限的监听事件,似乎无法对安装、卸载起到作用,具体原因不清楚,还有待研究。 有兴趣的小伙伴也可以研究研究,官方文档地址:

    2024年02月11日
    浏览(48)
  • 【chrome扩展开发】vue-i18n使用问题及解决方案

    记录chrome扩展开发时调用vue-i18n的一些问题和解决方法 vue : ^3.3.4 vue-i18n : ^9.2.2 vite : ^4.4.8 Uncaught (in promise) EvalError: Refused to evaluate a string as JavaScript because \\\'unsafe-eval\\\' is not an allowed source of script in the following Content Security Policy directive: \\\"script-src \\\'self\\\' \\\'wasm-unsafe-eval\\\' \\\'inline-speculation-

    2024年02月14日
    浏览(42)
  • 【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-在表单里拿到列表上下文onlineTableContext

    【二开】JeecgBoot-vue3二次开发 前端 扩展online表单js增强等-在表单里拿到列表上下文 对应的属性方法 acceptHrefParams \\\"p 跳转时获取的参数信息\\\" currentPage \\\"p 当前页数\\\" currentTableName \\\"p 当前表名\\\" description \\\"p 当前表描述\\\" hasChildrenField \\\"p 是否有子节点的字段名,仅树形表单下有效\\\" is

    2024年02月15日
    浏览(44)
  • 关于表单快速开发低代码技术平台的内容介绍

    运用什么样的表单快速开发软件平台可以实现高效率创收?随着科技的进步和飞速发展,专业的低代码技术平台已经走入了很多企业的办公职场中,它们灵活、轻量级、优质、高效、易维护等优势特点,可以高效助力广大企业提质增效,并且利用数据资源,实现流程化办公。

    2024年02月07日
    浏览(61)
  • 如何快速使用Vue3在electron项目开发chrome Devtools插件

    为了方便快速建立项目,我已经写好脚手架,直接clone项目,快速开发 点击快速进入源代码 拉取代码 安装依赖 运行项目 打包项目 打开chrome://extensions/,打开开发者模式,直接把打包产物拖到窗口即可 具体代码进入源代码 主要使用我另外开发的插件chrome-extension-ipc实现通讯

    2024年02月06日
    浏览(41)
  • Spring 填充属性和初始化流程源码剖析及扩展实现

    在上一篇博文 讲解 Spring 实例化的不同方式及相关生命周期源码剖析 介绍了 Spring 实例化的不同方式,本文主要围绕实例化过后对象的填充属性和初始化过程进行详细流程剖析 回顾前言知识,doCreateBean-createBeanInstance,通过 Supplier 接口、FactoryMethod、构造函数反射 invoke,创建

    2024年02月06日
    浏览(44)
  • 关闭chrome浏览器上自动填充密码的时候被Windows安全中心要去输入密码确认

    问题: 自动填充密码的时候跳出来一个安全提示问我要不要用这个保护,我没仔细看就输入密码确认了,但后来发现很麻烦这样,每次自动填充都要输一遍密码; 解决办法: 右上角的三个点-选择“设置”, 选择“自动填充和密码” 选择“Google密码管理工具” 关闭“填充密

    2024年02月13日
    浏览(66)
  • Chrome扩展之通信

    js类型 介绍 popup 单击插件图标后的弹窗中的js,由于单击图标打开popup,焦点离开又立即关闭,生命周期一般很短。 content-script 与页面共享DOM,但是不共享JS,可访问部分chrome扩展API。 background 权限最高,几乎可调用所有Chrome扩展API(除了devTools),且可以无限制跨域。生命周

    2024年01月23日
    浏览(34)
  • 从零实现的Chrome扩展

    Chrome 扩展是一种可以在 Chrome 浏览器中添加新功能和修改浏览器行为的软件程序,例如我们常用的 TamperMonkey 、 Proxy SwitchyOmega 、 AdGuard 等等,这些拓展都是可以通过 WebExtensions API 来修改、增强浏览器的能力,用来提供一些浏览器本体没有的功能,从而实现一些有趣的事情。

    2024年02月17日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包