chrome 插件开发问题记录

1、回填input值需要调用一下目标元素事件

ini 复制代码
let usernameDom = document.getElementsByName('loginName')[0];
let passwordDom = document.getElementsByName('userPassword')[0];
const evt = new Event('input', { bubbles: true });

// 将值填入 dom 输入框里
usernameDom.value = curentOpt.name;
usernameDom.dispatchEvent(evt);
passwordDom.value = curentOpt.pwd;
passwordDom.dispatchEvent(evt); 

2、popup 打开a链接页面需要添加target属性

xml 复制代码
<Button type='link' target='_blank' href={innerItem.url}>{innerItem.env}</Button>

3、避免插件注入网页样式导致网页错乱

manifest.json

js 复制代码
{
  "name": "Account Saver",
  "description" : "账号管理", 
  "version": "1.0", 
  "manifest_version": 2, 
  "icons": { 
    "16": "./images/logo192.png", 
    "48": "./images/logo192.png",
    "96": "./images/logo192.png",
    "128": "./images/logo192.png"
  },
  "browser_action": {
    "default_icon": "./images/logo192.png", 
    "default_title": "账号管理",
    "default_popup":"/index.html"
  },
  "permissions": [
    "tabs",
    "activeTab",
    "storage",
    "notifications"
  ],
  "background": {
    "persistent": false,
    "scripts": ["/static/js/background.js"]
  },
  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": [
        "/static/js/content.js"
      ],
      "css": [
        "static/css/content.css"
      ],
      "run_at": "document_idle"
    }
  ]
}

删除配置中的css注入"css": "static/css/content.css" ,

使用ShadowView 是一个写好的可开箱即用的面向 React 的 Shadow DOM 容器组件,利用 ShadowView 可以像普通组件一样方便的在 React 应用中创建启用 Shadow DOM 的容器元素。

ShadowView 目前完整兼容支持 React 15/16,组件的「事件处理、组件渲染更新」等行为在两个版中都是一致的。

js 复制代码
npm i shadow-view --save

基于react的项目配置

js 复制代码
// import './App.css';
import Popup from './popup';
import { ShadowView } from "shadow-view";

function App() {
  return (
    <div className="App">
      {/* <h1>Hello World</h1> */}
      <ShadowView 	
        styleSheets={[	
          '/static/css/main.css',
        ]}	
      >	
      <Popup></Popup>
    </ShadowView>	
    </div>
  );
}

export default App;

需要注意styleSheets的写法以及路径配置,npm官网的插件imports导入方式无效(避坑)

chrome 插件开发可以基于create-react-app创建的项目修改成插件需要的目录结构重点是public下的manifest.json配置

相关推荐
小月土星2 小时前
React Router 前端路由深度解析:从传统后端路由到现代 SPA 的完整演进
前端
程序员黑豆3 小时前
鸿蒙开发 Navigation 路由教程:从入门到实战
前端·harmonyos
用户938515635075 小时前
从零理解 React Router v6:每一个 API 都是怎么工作的
前端·javascript·全栈
用户059540174467 小时前
Redis缓存回滚踩坑实录:一个配置失误,让我在凌晨3点丢了3000条数据
前端·css
kyriewen8 小时前
别再这样写条件渲染了——你的React组件里藏着这5种定时炸弹
前端·javascript·react.js
IT_陈寒8 小时前
Redis缓存击穿把我坑惨了,原来这样设过期时间才靠谱
前端·人工智能·后端
用户938515635078 小时前
从"坐电梯"到"前端路由"——深入理解 Hash 路由原理
前端·typescript·全栈
梦想CAD控件9 小时前
网页端CAD的图形选择、编辑与夹点操作教程
前端·javascript·node.js
妙码生花9 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十二):管理员权限检查中间件,AI 随意放行预闯大祸
前端·后端·go
月月大王的3D日记9 小时前
Three.js 入门系列(8):六种光源全解析 —— 关灯了,开光!
前端·javascript