当前位置:首页 > 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)

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

实现一个谷歌插件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)

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

实现一个谷歌插件js

<!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应用商店。需要注册开发者账号并支付一次性费用。

常见功能扩展

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

注意事项

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

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

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

vue实现插件

vue实现插件

Vue 插件的基本实现 Vue 插件是一种扩展 Vue 功能的机制,通常用于添加全局功能或组件。插件可以是一个对象或函数,需要提供 install 方法。 const MyPlugin = {…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

vue分页插件实现

vue分页插件实现

Vue 分页插件实现方法 使用现成组件库(推荐) Element UI、Ant Design Vue 等主流库已提供成熟分页组件,可直接集成: <template> <…

js实现排序

js实现排序

数组排序方法 JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。 const num…