iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >vue+element如何开发一个谷歌插件
  • 909
分享到

vue+element如何开发一个谷歌插件

2023-06-15 01:06:51 909人浏览 独家记忆
摘要

这篇文章给大家分享的是有关Vue+element如何开发一个谷歌插件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue是什么Vue是一套用于构建用户界面的渐进式javascript框架,Vue与其它大型框架的区

这篇文章给大家分享的是有关Vue+element如何开发一个谷歌插件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

vue是什么

Vue是一套用于构建用户界面的渐进式javascript框架,Vue与其它大型框架的区别是,使用Vue可以自底向上逐层应用,其核心库只关注视图层,方便与第三方库和项目整合,且使用Vue可以采用单文件组件和Vue生态系统支持的库开发复杂的单页应用。

简单功能:点击浏览器右上角插件icon弹出小弹窗,点击设置弹出设置页,并替换背景图或颜色。

开始

本地创建文件夹testPlugin并新建manifest.JSON文件

{    "name": "testPlugin",    "description": "这是一个测试用例",    "version": "0.0.1",    "manifest_version": 2}

添加插件的小icon

testPlugin下创建icons文件夹,可以放入一些不同尺寸的icon,测试可以偷懒都放一种尺寸的icon。修改manifest.json为:

{    "name": "testPlugin",    "description": "这是一个测试用例",    "version": "0.0.1",    "manifest_version": 2,    "icons": {      "16": "icons/16.png",      "48": "icons/16.png"  }}

这时候在扩展程序中加载已解压的程序(就是我们创建的文件夹),就可以看到雏形了:

vue+element如何开发一个谷歌插件

选择性地添加点击插件icon浏览器右上角弹出来的框

"browser_action": {  "default_title": "test plugin",  "default_icon": "icons/16.png",  "default_popup": "index.html"}

testPlugin创建index.html文件:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>test plugin</title></head><body>  <input id="name" placeholder="请输入"/></body></html>

刷新插件,这时候点击浏览器中刚刚添加的插件的icon,就会弹出:

vue+element如何开发一个谷歌插件

js事件(样式同理)

document.getElementById('button').onclick = function() {    alert(document.getElementById('name').value)}

html中:

<input id="name" placeholder="请输入"/><input id="button" type="button" value="点击"/><script src="js/index.js"></script>

刷新插件,这时候点击浏览器中刚刚添加的插件的icon,就会弹出输入框中的值:

vue+element如何开发一个谷歌插件

一个嵌入网页中的悬浮框

上述例子是点击icon浏览器右上角出现的小弹窗,

引入vue.js、element-ui

下载合适版本的vue.js和element-ui等插件,同样按照index.js一样的操作引入,如果没有下载单独js文件的地址,可以打开cdn地址直接将压缩后的代码复制。

manifest.json中添加:

"content_scripts": [    {      "matches": [        "<all_urls>"      ],      "CSS": [        "css/index.css"      ],      "js": [        "js/vue.js",        "js/element.js",        "js/index.js"      ],      "run_at": "document_idle"    }  ],

在index.js文件:

这里使用在head里插入link 的方式引入element-ui的css,减少插件包的一点大小,当然也可以像引入index.js那样在manifest.json中引入。

直接在index.js文件中写Vue实例,不过首先得创建挂载实例的节点:

let element = document.createElement('div')let attr =  document.createAttribute('id')attr.value = 'appPlugin'element.setAttributenode(attr)document.getElementsByTagName('body')[0].appendChild(element)let link = document.createElement('link')let linkAttr =  document.createAttribute('rel')linkAttr.value = 'stylesheet'let linkHref =  document.createAttribute('href')linkHref.value = 'https://unpkg.com/element-ui/lib/theme-chalk/index.css'link.setAttributeNode(linkAttr)link.setAttributeNode(linkHref)document.getElementsByTagName('head')[0].appendChild(link)const vue = new Vue({    el: '#appPlugin',    template:`      <div class="app-plugin-content">{{text}}{{icon_post_message}}<el-button @click="Button">Button</el-button></div>    `,    data: function () {        return { text: 'hhhhhh', icon_post_message: '_icon_post_message', isOcContentPopShow: true }    },    mounted() {        console.log(this.text)    },    methods: {        Button() {            this.isOcContentPopShow = false        }    }})

让我们来写一个简易替换网页背景颜色工具

index.js:

let element = document.createElement('div')let attr = document.createAttribute('id')attr.value = 'appPlugin'element.setAttributeNode(attr)document.getElementsByTagName('body')[0].appendChild(element)let link = document.createElement('link')let linkAttr = document.createAttribute('rel')linkAttr.value = 'stylesheet'let linkHref = document.createAttribute('href')linkHref.value = 'Https://unpkg.com/element-ui/lib/theme-chalk/index.css'link.setAttributeNode(linkAttr)link.setAttributeNode(linkHref)document.getElementsByTagName('head')[0].appendChild(link)const vue = new Vue({    el: '#appPlugin',    template: `        <div v-if="isOcContentPopShow" class="oc-move-page" id="oc_content_page">            <div class="oc-content-title" id="oc_content_title">颜色 <el-button type="text" icon="el-icon-close" @click="close"></el-button></div>            <div class="app-plugin-content">背景:<el-color-picker v-model="color1"></el-color-picker></div>            <div class="app-plugin-content">字体:<el-color-picker v-model="color2"></el-color-picker></div>        </div>    `,    data: function () {        return { color1: null, color2: null, documentArr: [], textArr: [], isOcContentPopShow: true }    },    watch: {        color1(val) {            let out = document.getElementById('oc_content_page')            let outC = document.getElementsByClassName('el-color-picker__panel')            this.documentArr.forEach(item => {                    if(!out.contains(item) && !outC[0].contains(item) && !outC[1].contains(item)) {                        item.style.cssText = `background-color: ${val}!important;color: ${this.color2}!important;`                    }            })        },        color2(val) {            let out = document.getElementById('oc_content_page')            let outC = document.getElementsByClassName('el-color-picker__panel')[1]            this.textArr.forEach(item => {                if(!out.contains(item) && !outC.contains(item)) {                        item.style.cssText = `color: ${val}!important;`                    }            })        }    },    mounted() {        chrome.runtime.onConnect.addListener((res) => {            if (res.name === 'testPlugin') {                res.onMessage.addListener(mess => {                    this.isOcContentPopShow = mess.isshow                })            }        })        this.$nextTick(() => {            let bodys = [...document.getElementsByTagName('body')]            let headers = [...document.getElementsByTagName('header')]            let divs = [...document.getElementsByTagName('div')]            let lis = [...document.getElementsByTagName('li')]            let articles = [...document.getElementsByTagName('article')]            let asides = [...document.getElementsByTagName('aside')]            let footers = [...document.getElementsByTagName('footer')]            let navs = [...document.getElementsByTagName('nav')]            this.documentArr = bodys.concat(headers, divs, lis, articles, asides, footers, navs)            let as = [...document.getElementsByTagName('a')]            let ps = [...document.getElementsByTagName('p')]            this.textArr = as.concat(ps)        })    },    methods: {        close() {            this.isOcContentPopShow = false        }    }})

index.html:

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <title>my plugin</title>  <link rel="stylesheet" href="css/index.css"></head><body>  <div class="plugin">    <input id="plugin_button" type="button" value="打开" />  </div></body><script src="js/icon.js"></script></html>

新建icon.js:

plugin_button.onclick = function () {  mess()}async function mess () {  const tabId = await getCurrentTabId()  const connect = chrome.tabs.connect(tabId, {name: 'testPlugin'});  connect.postMessage({isShow: true})}function getCurrentTabId() {  return new Promise((resolve, reject) => {      chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {          resolve(tabs.length ? tabs[0].id : null)      });  })}

这样一个小尝试就完成了,当然如果有更多需求可以结合本地存储或者服务端来协作。

感谢各位的阅读!关于“vue+element如何开发一个谷歌插件”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: vue+element如何开发一个谷歌插件

本文链接: https://www.lsjlt.com/news/276250.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue+element如何开发一个谷歌插件
    这篇文章给大家分享的是有关vue+element如何开发一个谷歌插件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区...
    99+
    2023-06-15
  • vue+element开发一个谷歌插件的全过程
    简单功能:点击浏览器右上角插件icon弹出小弹窗,点击设置弹出设置页,并替换背景图或颜色。 开始 1.本地创建文件夹testPlugin并新建manifest.json文件 {...
    99+
    2024-04-02
  • 如何开发一个jquery的插件
    在现代网页开发中,jquery 插件可以帮助我们节省更多开发时间,使我们的代码更具可重用性,从而加速我们的开发流程。本文将教你如何开发一个简单的 jquery 插件,希望能为初学者提供帮助。编写 jquery 插件的基本结构要开发一个 jq...
    99+
    2023-05-18
  • WordPress插件开发教程1:开发第一个WordPress插件
    一、创建一个插件         第一步:在 wp-content \ plugins 目录新建一个目录,随便起个名字,比如:my-first-plugin。         第二步:进入 my-first-plugin 目录,新建一个PH...
    99+
    2023-09-10
    Wordpress WordPress插件开发教程 WordPress插件开发 WordPress插件教程 WordPress开发教程
  • 如何开发一个vscode百度翻译插件
    本篇文章给大家分享的是有关如何开发一个vscode百度翻译插件,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。每次给元素取className的时候总是时不时的要去百度翻译下,大大...
    99+
    2023-06-22
  • vue如何开发一个加载Button组件
    本篇内容介绍了“vue如何开发一个加载Button组件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!组件背景点击按钮时请求一些接口数据,而为...
    99+
    2023-06-30
  • windows谷歌浏览器开发者模式如何打开
    这篇文章主要介绍了windows谷歌浏览器开发者模式如何打开的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇windows谷歌浏览器开发者模式如何打开文章都会有所收获,下面我们一起来看看吧。谷歌浏览器开发者模式打...
    99+
    2023-07-01
  • vscode中如何开发一个支持vue文件跳转到定义的插件
    本篇内容主要讲解“vscode中如何开发一个支持vue文件跳转到定义的插件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vscode中如何开发一个支持vue文件跳转到定义的插件”吧!插件vsco...
    99+
    2023-07-04
  • Element一套优雅的Vue 2组件库是如何开发的
    这期内容当中小编将会给大家带来有关Element一套优雅的Vue 2组件库是如何开发的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。初期也遇到一些棘手的问题,很庆幸都找到...
    99+
    2024-04-02
  • vue如何实现一个弹窗插件
    这篇文章主要讲解了“vue如何实现一个弹窗插件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue如何实现一个弹窗插件”吧!popup.vue<template> &l...
    99+
    2023-07-04
  • 如何开发一个封装iframe的vue组件
    这篇文章给大家分享的是有关如何开发一个封装iframe的vue组件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。VUE的基本组成单元,我看应该是组件。用VUE开发前端项目,就是开发一个个组件,然后搭积木一样,将项...
    99+
    2023-06-14
  • windows谷歌浏览器flash插件被拦截如何解决
    本篇内容主要讲解“windows谷歌浏览器flash插件被拦截如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows谷歌浏览器flash插件被拦截如何解决”吧!解决方法:进入浏览器...
    99+
    2023-07-01
  • 如何开发MyBatis插件
    本篇内容介绍了“如何开发MyBatis插件”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.MyBatis...
    99+
    2024-04-02
  • 如何开发jQuery插件
    今天小编给大家分享一下如何开发jQuery插件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。jQuery是javascrip...
    99+
    2023-06-26
  • Springboot插件如何开发
    本篇内容主要讲解“Springboot插件如何开发”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot插件如何开发”吧!一 背景项目新增监控系统,对各个系统进行监控接口调用情况,初...
    99+
    2023-06-30
  • 如何像专家一样开发CMS插件
    选择合适的CMS: 在开发插件之前,你需要选择合适的CMS。目前,市场上最受欢迎的CMS包括WordPress、Joomla和Drupal。每个CMS都有自己的优势和劣势,你需要根据自己的需求来选择。 了解CMS的架构: ...
    99+
    2024-02-14
    CMS插件 WordPress插件 Joomla插件 Drupal插件 开发技巧
  • VUE中element-ui如何实现一个复用Table组件
    小编给大家分享一下VUE中element-ui如何实现一个复用Table组件,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!步骤一先来个基本的表格展示官例的tableDatatableDat...
    99+
    2024-04-02
  • 如何开发一个提示颜色代码的VS Code插件
    今天小编给大家分享一下如何开发一个提示颜色代码的VS Code插件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。需求我在写c...
    99+
    2023-07-04
  • Vue插件如何封装发布
    这篇文章将为大家详细讲解有关Vue插件如何封装发布,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。准备  Vue官网插件部分的介绍虽然很简单,但是还是好好刷一遍的。由于此插...
    99+
    2024-04-02
  • 开发一个封装iframe的vue组件
    目录一、组件介绍 二、组件内部结构及逻辑 1、代码组织结构2、地图组件三、iframe接口 四、外部接口 五、运行结果六、总结 VUE的基本组成单元,我看应该是组件。用VUE开发前端...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作