当前位置:首页 > JavaScript

实现一个谷歌插件js

2026-01-31 10:01:32JavaScript

创建谷歌插件的基本结构

一个谷歌插件通常由几个核心文件组成:manifest.json(配置文件)、背景脚本(background script)、内容脚本(content script)和可选的弹出页面(popup.html)。

编写manifest.json

manifest.json是插件的核心配置文件,定义插件的基本信息和权限。以下是一个基础示例:

{
  "manifest_version": 3,
  "name": "示例插件",
  "version": "1.0",
  "description": "这是一个简单的谷歌插件示例",
  "action": {
    "default_popup": "popup.html",
    "default_icon": "icon.png"
  },
  "permissions": ["activeTab", "storage"],
  "background": {
    "service_worker": "background.js"
  },
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["content.js"]
    }
  ]
}

背景脚本(background.js)

背景脚本在插件生命周期中持续运行,处理全局事件和跨页面通信。

chrome.runtime.onInstalled.addListener(() => {
  console.log('插件已安装');
});

chrome.action.onClicked.addListener((tab) => {
  chrome.scripting.executeScript({
    target: {tabId: tab.id},
    files: ['content.js']
  });
});

内容脚本(content.js)

内容脚本可以直接操作网页DOM,但受限于沙箱环境。

document.body.style.backgroundColor = 'lightblue';
console.log('内容脚本已注入当前页面');

弹出页面(popup.html)

弹出页面是用户点击插件图标时显示的界面。

<!DOCTYPE html>
<html>
<head>
  <title>插件弹窗</title>
  <style>
    body { width: 300px; padding: 10px; }
    button { margin: 5px; }
  </style>
</head>
<body>
  <h3>我的插件</h3>
  <button id="changeColor">改变页面颜色</button>
  <script src="popup.js"></script>
</body>
</html>

弹出页面逻辑(popup.js)

document.getElementById('changeColor').addEventListener('click', () => {
  chrome.tabs.query({active: true, currentWindow: true}, (tabs) => {
    chrome.scripting.executeScript({
      target: {tabId: tabs[0].id},
      function: changePageColor
    });
  });
});

function changePageColor() {
  document.body.style.backgroundColor = 'lightgreen';
}

调试和加载插件

在Chrome浏览器地址栏输入chrome://extensions/,启用"开发者模式",点击"加载已解压的扩展程序"选择插件目录。

插件发布流程

完成开发后,可以打包为.crx文件提交到Chrome应用商店。需要注册开发者账号并支付一次性费用。

实现一个谷歌插件js

常见功能扩展

  • 使用chrome.storage进行数据存储
  • 通过chrome.runtime.sendMessage实现脚本间通信
  • 添加选项页面(options_page)进行配置
  • 使用chrome.alarms创建定时任务

注意事项

  • Manifest V3已取代V2,注意API变化
  • 内容脚本不能直接使用大部分chrome.* API
  • 权限声明要最小化,避免过度请求
  • 考虑跨浏览器兼容性时需调整代码

标签: 插件js
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…