chrome 扩展 popup 弹窗的使用

popup的基本使用方法

popup介绍

popup 是点击 browser_action 或者 page_action图标时打开的一个小窗口网页,焦点离开网页就立即关闭,一般用来做一些临时性的交互。

在这里插入图片描述

popup配置

V3版本中(V2版本是在 browser_action 中 ),可以通过配置文件(manifest.json)中 action 里面的default_popup 字段来指定 popup 页面,也可以调用 setPopup() 方法。

在这里插入图片描述

使用popup的注意事项:

  1. popup 页面的生命周期一般很短,需要长时间运行的代码千万不要写在 popup 里面。
  2. 所有的页面元素都写在 popup.html 中,css 也可以写在 popup.html 中的 <style> 标签里面,当然也可以写在一个单独的css中引入。但是JS 代码必须是一个单独的 JS 文件,在 popup.html<script> 标签中写 JS无效的 。通过<script>标签引入 popup.js 即可。另外,其他的一些库也可引入的,例如: jquery
<script src="js/JQuery.js"></script>
<script src="js/popup.js"></script>
  1. popup.html 中元素的事件,必须在 popup.js 中使用代码动态绑定。例如:

这样是无法触发的事件的
HTML

<button οnclick="testClick()">测试按钮<button>

JS

function testClick() { alert("测试点击事件"); }

需要像下面一样动态绑定
HTML

<button id="testBTN">测试按钮<button>

JS

$("#testBTN").click(function() { alert("测试点击事件"); });
  1. popup.js 中要与web页面通信,permissions 需要 activeTab 权限。
    在这里插入图片描述
  2. 强制 popup.html 关闭可以使用:window.close();
  3. popup.js 如果要 调试/查看控制台 的话,在弹出的 popup.html 页面,点击鼠标右键,然后选择 检查 即可。通过 F12 打开的是网址页面的控制台,并不是 popup 的。
  4. popup 中可以直接通过 chrome.extension.getBackgroundPage() 获取 backgroundwindow 对象。

popup 和 content_scripts 通信

popup.js

// 获取具有指定属性的所有标签页,active: true 标签页在窗口中是否为活动标签页;currentWindow 标签页是否在当前窗口中。
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {// 取出当前标签页的 tag_id, 发送一个消息出去, 同时带上回调函数chrome.tabs.sendMessage(tabs[0].id, { action: "info", select_type: select_type }, function (response) {// 回调函数(传回的信息)if (response.result) {// 关闭 popup.html 页面window.close();} else {alert(response.note)}});
});

content_scripts

chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {if (request.action == 'info') {// 赋值window.select_type = request.select_type;window.all_url = request.all_url;window.user_id = request.user_id;window.password = request.password;switch (window.select_type) {case '1':// code...// 返回数据sendResponse({result: true});break;case '2':if (1) {sendResponse({result: true});} else {sendResponse({result: false,note: '请填写网址和账号密码'});}break;}} else {sendResponse({result: false,note: '操作失败'});}}
);

其他:

非官方的中文文档:https://chrome.noonme.com/extensions/messaging.html

关于chrome扩展,介绍比较全的一片文章:https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/161756.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——选择排序

完整代码&#xff1a; //选择排序 // 选择排序是一种简单直观的排序算法。它的工作原理如下:首先在未排序序列中找到最小&#xff08;大&#xff09;元素&#xff0c;存放到排序序列的起始位置&#xff0c;然后&#xff0c;再从剩余未排序元素中继续寻找最小&#xff08;大&am…

ke9案例三:页面提交文件,我服务器端接收

案例三:页面提交文件,我服务器端接收 ProcessFile.java 1value "/process-file" 2获取邮件消息的所有部分part--Collection<Part> partsrequest.getParts(); 3遍历每一个part 4之后可以打印头文件等String headerpart.getHeader("content-disposition&q…

每天五分钟计算机视觉:搭建手写字体识别的卷积神经网络

本文重点 我们学习了卷积神经网络中的卷积层和池化层,这二者都是卷积神经网络中不可缺少的元素,本例中我们将搭建一个卷积神经网络完成手写字体识别。 卷积和池化的直观体现 手写字体识别 手写字体的图片大小是32*32*3的,它是一张 RGB 模式的图片,现在我们想识别它是从 …

Ubuntu 20.04源码安装git 2.35.1

《如何在 Ubuntu 20.04 上从源代码安装 Git [快速入门]》和《如何在 Ubuntu 20.04 上安装 Git》是我参考的博客。 https://git-scm.com/是git官网。 lsb_release -r看到操作系统版本是20.04。 uname -r看到内核版本是5.4.0-156-generic。 sudo apt update更新一下源。 完…

IDEA中如何移除未使用的import

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是全栈工…

自动化测试之争:code vs codeless

在TesterHome看到的一个话题&#xff0c;当我们选择做自动化时是否需要code 或者codeless。 code方案 用code去做自动化&#xff0c;实现过程就是拿个IDE撸代码。 python pytest/unittest appium/selenium/requests ... Java Junit/testNG appium/selenium/requests .…

Day21力扣打卡

打卡记录 在树上执行操作以后得到的最大分数&#xff08;树状DP&#xff09; 链接 大佬的题解 class Solution { public:long long maximumScoreAfterOperations(vector<vector<int>> &edges, vector<int> &values) {vector<vector<int>…

MapReduce:大数据处理的范式

一、介绍 在当今的数字时代&#xff0c;生成和收集的数据量正以前所未有的速度增长。这种数据的爆炸式增长催生了大数据领域&#xff0c;传统的数据处理方法往往不足。MapReduce是一个编程模型和相关框架&#xff0c;已成为应对大数据处理挑战的强大解决方案。本文探讨了MapRed…

虚拟局域网

目录 控制广播的方法 vlan 为什么需要vlan vlan的成员模式 vlan的实现 vlan表 vlan表的作用 静态vlan命令 交换机端口链路类型 trunk 前言 标签技术 trunk标签类型 trunk相关命令 单臂路由 前言 虚拟路由端口 创建路由器接口f0/0的子接口 vlan下的DHCP 网…

VueJs各个版本— 判断当前是开发、生产环境

VueJs各个版本— 判断当前是开发、生产环境 文章目录 VueJs各个版本— 判断当前是开发、生产环境vue项目分类VueCLI21&#xff0c;判断样例2&#xff0c;判断原理 Vue CLI 3 和 Vue CLI 41&#xff0c;判断样例2, 判断原理手动设置-json文件手动设置- .env 文件单个 .env 文件多…

雨水收集设施模块把雨水收集起来,经简单处理用于消防洗车冲厕等

雨水收集设施模块是一种利用雨水资源的环保设施&#xff0c;它可以将雨水收集起来&#xff0c;经过简单的处理后&#xff0c;用于消防、洗车、冲厕等用途。 雨水收集设施模块通常由多个雨水收集器组成&#xff0c;每个收集器都有一个集水口和一个小型储水池。当雨水流入集水口…