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配置

相关推荐
Wect10 分钟前
React 性能优化精讲
前端·react.js·性能优化
追风筝的人er43 分钟前
SpringBoot+Vue3 企业考勤如何处理法定假期?节假日方案、调休补班与工作日判断链路拆解
前端·vue.js·后端
无敌的黑星星1 小时前
Java8 CompletableFuture 实战指南
linux·前端·python
雁鸣零落1 小时前
如何在 Chrome 中查看其他浏览器的书签?书签空间订阅与侧边栏只读切换指南
前端·chrome·edge浏览器
hpoenixf2 小时前
一天上线 + 零返工:我如何给复杂前端需求建立“安全感”
前端
广州华水科技2 小时前
单北斗GNSS变形监测系统在水利工程安全保障中的应用与优势分析
前端
yqcoder2 小时前
CSS 外边距重叠(Margin Collapsing):现象、原理与完美解决方案
前端·css
山楂树の3 小时前
图像标注大坑:img图片 + Canvas 叠加标注,同步放大后标注位置偏移、对不齐?详解修复方案及亚像素处理原理
前端·css·学习·canva可画
本山德彪3 小时前
我做了一个拼豆图纸生成器,把照片秒变图纸
前端
DTrader4 小时前
用TS无法实盘量化? - 实盘均线策略
前端·api