当前位置: 首页 > article >正文

让谷歌插件单独一个窗口运行

示例

一、manifest.json配置默认popup

{
  "manifest_version": 3,
  "name": "插件测试",
  "description": "将Vue项目放到插件插件中运行",
  "version": "0.0.1",
  "icons": {
    "16": "statics/imgs/favicon_16.png",
    "36": "statics/imgs/favicon_36.png",
    "48": "statics/imgs/favicon_48.png",
    "128": "statics/imgs/favicon_128.png"
  },
  "action": {
    "default_icon": {
      "16": "statics/imgs/favicon_16.png",
      "36": "statics/imgs/favicon_36.png",
      "48": "statics/imgs/favicon_48.png",
      "128": "statics/imgs/favicon_128.png"
    },
    "default_popup": "views/popup.html"
  },
  "content_security_policy": {
    "extension_pages": "style-src 'self' 'unsafe-inline';script-src 'self'; object-src 'self' ;",
    "sandbox": "sandbox allow-scripts; script-src 'self'; object-src 'self' " 
  }
}

二、popup执行脚本

<!-- 目前仅仅是为了执行脚本 -->
<script src="../js/index.js"></script>

三、index.js脚本打开新的popup

// 当脚本被执行时
window.onload = () => {
    openpage();
    function openpage() {
        // 获取当前窗口
        chrome.windows.getCurrent((currentWindow) => {
            // 聚焦一下当前窗口,主要是为了关闭popup
            chrome.windows.update(currentWindow.id, { focused: true });
            // 默认宽高和位置
            let newWindowWidth = 1024;
            let newWindowHeight = 600;
            let newWindowLeft = currentWindow.left + currentWindow.width - newWindowWidth;
            let newWindowTop = 0;
            
            chrome.windows.create({
                url: "../views/dist/index.html", // 一个Vue项目打包后的入口文件
                type: "popup",
                width: newWindowWidth,
                height: newWindowHeight,
                left: newWindowLeft,
                top: newWindowTop
            }, (createdWindow) => {
                // 聚焦到新窗口
                chrome.windows.update(createdWindow.id, { focused: true });
            });
        })
    }
}

四、完整代码:Qmagician/extensionsSingleWindow (gitee.com)icon-default.png?t=N7T8https://gitee.com/qmagician/extensions-single-window


http://www.kler.cn/news/109178.html

相关文章:

  • TSINGSEE青犀基于AI视频识别技术的平安校园安防视频监控方案
  • 无法查看 spring-boot-starter-parent的pom.xml
  • Linux命令(108)之dirname
  • Mybatis 动态SQL
  • Python mysql 封装备用
  • Go学习第十六章——Gin文件上传与下载
  • Vue路由
  • 基于单片机的温湿度和二氧化碳检测系统设计
  • TensorFlow图像多标签分类实例
  • 【鸿蒙软件开发】ArkTS基础组件之TextTimer(文本显示计时)、TimePicker(时间选择)
  • 校园物业报修小程序开发笔记一
  • C/C++晶晶赴约会 2020年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • 基于单片机的超声波探伤仪设计
  • 一句话解释什么是出口IP
  • 0基础学习VR全景平台篇第114篇:全景图优化和输出 - PTGui Pro教程
  • LuaTable转C#的列表List和字典Dictionary
  • Openssl数据安全传输平台015:OCCI的使用方法+在项目中的设计与实现
  • java中spi与api的区别
  • “破解我!“---160个CrackMe练习001-Acid buen.exe
  • 免费活动-11月4日敏捷武林上海站 | Scrum.org CEO 亲临现场
  • 深入理解Linux网络笔记(五):深度理解本机网络IO
  • 【技能树笔记】网络篇——练习题解析(十)
  • STM32-通用定时器
  • SpringBoot 整合 Nacos 实现统一配置中心
  • Azure云工作站上做Machine Learning模型开发 - 全流程演示
  • DVWA-SQL Injection SQL注入
  • 当『后设学习』碰上『工程学思维』
  • iOS iGameGuardian修改器检测方案
  • Python requests之Cookie
  • 大数据Flink(一百零五):SQL性能调优