一、背景

假设我们在日常的测试过程中,有很多页面需要经常访问,一种方式是我们可以直接把这些页面添加为书签,但这种方式必须记录完整的URL。如果我们有多套环境,比如有测试环境、UAT环境、线上环境,每套环境有20个常用的页面,那总共就需要建60个书签,并且不同环境下容易弄混淆。

今天我们介绍另外一种实现方式:通过Chrome开发自定义右键菜单的方式,实现一套菜单在多套环境下快速访问常用的页面。先来看看效果:

网上也有一些介绍自定义右键菜单的文章,但大多都说得比较简单,只介绍到一级菜单直接指定地址,本文会直接讲到怎么添加二级菜单,以及一套菜单在多套环境下快速访问常用的页面。话不多说,下面直接上详细的代码解释~

二、扩展程序工程目录

工程文件目录如下:

非常简单,只需要一个manifest.json文件,一个Right-click.js文件,一个icon.png图片。

manifest.json文件主要定义一些基础信息,包括自定义菜单的图片、调用哪个js文件、允许的权限。
Right-click.js文件主要定义具体的菜单跳转,哪一级的哪个菜单跳转到哪个URL地址。
icon.png图片就是作为自定义菜单的图片。

三、具体代码实现

manifest.json代码如下:

{"manifest_version": 2,"name": "测试工具","version": "1.0.0","description": "Demo to use Vue in Chrome extension.","icons":{"16": "img/icon.png","48": "img/icon.png"},"background":{"scripts": ["js/Right-click.js"]},"permissions":["contextMenus", "tabs","notifications", "webRequest","webRequestBlocking","storage", "cookies","activeTab","http://*/*","https://*/*"]
}

关键代码解释:

  • “icons”:下面指定右键菜单的图片icon路径,16的是右键菜单用的icon,48的是Google扩展程序那里用的icon。
  • “background”: 下面指定右键菜单用哪个js文件。
  • “permissions”: 下面指定右键菜单跳转URL有哪些权限,就照着我上面这样写就OK。

Right-click.js代码如下:

chrome.contextMenus.create({title: "右键快捷菜单", //菜单的名称id: '10',//一级菜单的idcontexts: ['page'], // page表示页面右键就会有这个菜单,如果想要当选中文字时才会出现此右键菜单,用:selection
});chrome.contextMenus.create({title: '百度', //菜单的名称id: '1101',//二级菜单的idparentId: '10',//表示父菜单是“右键快捷菜单”contexts: ['page'],
});chrome.contextMenus.create({title: 'CSDN', //菜单的名称id: '1102',parentId: '10',//表示父菜单是“右键快捷菜单”contexts: ['page'],
});chrome.contextMenus.create({title: '百度新闻',parentId: '1101',//1101就是上面定义的二级菜单“百度”的idonclick: function (params) {chrome.tabs.getSelected(null, function (tab) {window.open("http://news.baidu.com/#index/cxPurchaseinfo/cxGoodsPurchases", "百度新闻", "");});}
});function getUrl(str) {var according = "/#/";var url = str.split(according)[0];//以#号做分隔,获取分隔后的前半段url内容,即得到域名return url;
};chrome.contextMenus.create({title: '个人资料',parentId: '1102',onclick: function (params) {chrome.tabs.getSelected(null, function (tab) {var tabUrl = tab.url;//获取当前页面的url//通过getUrl方法把域名提取出来,适用于在一个管理系统下做很多个右键菜单,跳转该管理系统下不同子页面的需求var urls = getUrl(tabUrl);//域名+子页面的urlwindow.open(urls + "/#/user-center/profile", "个人资料", "");});}
});chrome.contextMenus.create({title: '浏览历史',parentId: '1102',onclick: function (params) {chrome.tabs.getSelected(null, function (tab) {var tabUrl = tab.url;//获取当前页面的url//通过getUrl方法把域名提取出来,适用于在一个管理系统下做很多个右键菜单,跳转该管理系统下不同子页面的需求var urls = getUrl(tabUrl);//域名+子页面的urlwindow.open(urls + "/#/user-center/history", "浏览历史", "");});}
});

关键代码解释:
chrome.contextMenus.create就是创建右键菜单的方法,代码从上往下定义一级、二级、三级菜单:

  • 一级菜单为:右键快捷菜单
  • 二级菜单为:百度、CSDN
  • 三级菜单为:百度》百度新闻,CSDN》个人资料,CSDN》浏览历史

getUrl(str)方法用于从当前tab页的URL地址中提取出域名地址。比如我进入的页面是CSDN的个人中心页面:https://i.csdn.net/#/user-center/profile, 那么getUrl(str)方法就是用于以“/#/”号做为分隔,提取出域名地址:https://i.csdn.net。

这样后面跳转到个人中心》浏览历史的代码:urls + “/#/user-center/history”,实际就是域名https://i.csdn.net+“/#/user-center/history”,拼装成完整的URL: https://i.csdn.net/#/user-center/history 。

这样做的好处就是文章开头说的,如果有多套环境,比如CSDN的:

  • 测试环境是: https://testi.csdn.net/#/user-center/history
  • UAT环境是: https://uati.csdn.net/#/user-center/history
  • 线上环境是: https://i.csdn.net/#/user-center/history

每套环境我都是进入CSDN的个人中心页面后,右键菜单选择“浏览历史”菜单,就可以进入对应环境的“浏览历史”页面了。而不需要分别记录3个书签地址。

一方面页面多了之后书签数量呈几何倍数增长,另一方面,也是最重要的方面,不会出现搞混淆访问错页面的情况,比如在测试环境测试的时候错误的点到了线上环境的书签地址,改到了线上的配置导致线上事故。这就是相比Chrome书签而言,用这种右键菜单的方式最大的优点了。

代码非常简单,配合我上面的注释应该很好看懂,然后照着样子添加自己想要的右键菜单代码~

四、添加项目文件夹到Chrome

打开Chrome设置》更多工具》扩展程序:

打开开发者模式,加载已解压的扩展程序:

选择我们上面的右键菜单的工程文件夹加载,能成功加载,看到这个扩展程序面板则说明代码没问题,可以正常使用了:

最后的效果如下图,在页面上右键,就会出现我们自定义的“右键快捷菜单”:

以上就是本次的全部内容,如果对你有帮助,欢迎关注我的微信公众号:程序员杨叔,各类文章都会第一时间在上面发布,持续分享全栈测试知识干货,你的支持就是作者更新最大的动力~

Chrome开发自定义右键菜单实现快速跳转到指定页面相关推荐

  1. html 右键菜单 插件,Script Menu:自定义右键菜单

    Script Menu的开发背景 对于网页上的右键菜单用户可能再熟悉不过了,常见的右键菜单有复制.粘贴.刷新.另存为.查看网页源代码等,但是这些右键菜单都是chrome自己提供或者其他插件的菜单,你有 ...

  2. 桌面 html 自定义,【极简壁纸 - 技术分享】html js自定义右键菜单方法

    自定义右键菜单 极简壁纸2.0 地址: https://bz.zzzmh.cn 目前进度已开发到95% 近期有时间就会分享一下,我在开发过程中用到的一些小技术的简单用法和demo 关于html js右 ...

  3. JS简单实现自定义右键菜单

    今天来讲一个关于右键菜单的小demo,抛砖引玉. 首先,我们要用css和html做一个自定义右键菜单. <!--自定义右键菜单html代码--> <div id="menu ...

  4. antd Tree组件中,自定义右键菜单

    最近项目中,有一个需求是自定义antd的Tree组件的右键菜单功能. 直接上代码 class Demo extends Component {state = {rightClickNodeTreeIt ...

  5. DevExpress的TreeList实现自定义右键菜单打开文件选择对话框

    场景 DevExpress的TreeList实现节点上添加自定义右键菜单并实现删除节点功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...

  6. java 树 右键菜单_jQuery实现自定义右键菜单的树状菜单效果

    本文实例讲述了jQuery实现自定义右键菜单的树状菜单效果.分享给大家供大家参考.具体如下: 这是一款基于jQuery的自定义右键菜单,在树状结构的子节点(下级没有节点)上单击右键才会弹出自定义菜单, ...

  7. vue怎么实现右键二级菜单_vue中如何自定义右键菜单详解

    在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件,如下: v-for="item in resourceList" :key="item.id&qu ...

  8. [读码时间] 自定义右键菜单

    说明:代码取自网络,CSS中注释为笔者学习时添加,JS中的注释为原文所有! <!DOCTYPE html> <html> <head><meta charse ...

  9. win10 自定义右键菜单

    win10 自定义右键菜单 首先使用快捷键 win + r 打开运行窗口,在其中输入 regedit 然后点击 确定 进入注册表后,按照顺序找到位置: HKEY_LOCAL_MACHINE\SOFTW ...

最新文章

  1. 缓存区溢出漏洞工具Doona
  2. 浅析网站优化中锚文本的使用技巧
  3. pyqt5教程9:Widgets组件
  4. Redis之GEO存储地理位置信息
  5. 读书笔记《单核工作法》_4原理4,5
  6. CF633C Spy Syndrome 2
  7. php 多组radiobutton,Tkinter多个Radiobutton组
  8. Oracle外键需要建索引吗?
  9. XCTF-高手进阶区:ics-06
  10. 时间设置偏移秒_零偏移有源低通滤波器,第2部分
  11. 淘宝npm镜像使用方法(转)
  12. 泛型(模拟list)
  13. 数字电路设计200例_惊险!200米高空,quot;蜘蛛侠quot;救quot;蜘蛛人quot;!
  14. 数据科学和人工智能技术笔记 一、向量、矩阵和数组
  15. 计算机三级之嵌入式系统学习笔记9
  16. eclipse如何设置断点断点处运行快捷键
  17. Python制作2048小游戏
  18. dmg文件 linux,Linux挂载Mac系统下的dmg文件
  19. [CSS3] 使用边框和背景(设置元素的背景)
  20. Jupyter notebook 配置无问题 但就是无法远程访问,解决方法

热门文章

  1. python监控linux运行程序_python linux监控程序
  2. e1000e网卡驱动分析—概述
  3. 分享:Babel7的配置
  4. 协议在计算机网络有什么作用是什么意思,网络协议作用是什么
  5. Unity3d菜鸟入门的学习路线--笔记1
  6. 【记一次开发油猴插件的过程】——逆水寒
  7. 初始java ~ 逻辑控制
  8. Polygon zkEVM的pil-stark Fibonacci状态机初体验
  9. Maven配置nexus私服地址
  10. Supervisor启动java服务(jar)