Chrome扩展移植到Edge浏览器教程
微软在推出Edge浏览器之初,就把能够使用扩展(extension)作为一个重要功能。在Win10一周年更新版(1607)中,这项功能正式向广大用户推出(当然,Insider用户早就测试了一段时间了)。在Build2016上,微软表明,为了简化开发者的工作,正在准备推出一款专用工具,用于将Chrome浏览器的扩展移植到Edge浏览器中。
▲商店中已有的Edge扩展
1.简介
最近,这项工具(Microsoft Edge Extension Toolkit)也面世了。这个工具还挂着一个Preview,离完美的转制还有一段距离。但是经过几个Bug fix更新,已经能完成基本的转制工作了。这款工具适用于一周年更新版,已经能在Windows10商店下载。点此前往Windows应用商店下载。
▲Microsoft Edge Extension Toolkit
这款工具加载了Chrome扩展项目后,会创建所需的JSON清单(manifest.json),并且使用一个APIBridge为扩展中的Chrome API做一个转换。
经过一番摸索,我成功转制了几个Chrome扩展。转制后的扩展已经可以地被安装到Edge,但是那些扩展的一部分功能还不能正常运行。应该是API的问题。从已经发布的扩展来看,Edge已经支持了许多扩展用的API了。问题应该是目前这个工具的APIBridge能够转换的Chrome API还不够丰富。
2.转制
现在开始以一个案例来介绍转制流程吧。首先我下载了惠惠购物助手Chrome版(youdaogouwu-4.2.9.6.crx)。然后将其后缀名改为zip,解压就可以得到他的项目代码和资源了。打开Microsoft Edge Extension Toolkit,点击左上角的Load extension to convert按钮,选择刚才解压的项目文件夹。
转制工具加载后进行分析,同时为项目添加了一个清单和两个Bridge。
这时候我们要根据转制工具下面的提示进行修改。显然红色的是错误,蓝色的是项目中成功被桥接的API。 其中一定会遇到的,数量不少,同时也很容易解决的错误是下面这种。要求你更换Chrome扩展协议的标识。
loader.js: chrome-extension protocol should be replaced. recommend using getExtensionProtocol() - defined in API bridge
点击错误就会跳转到具体的代码行
按照建议,修改方法就是把他改成下面这样
猜测这样改的意义应该是让他在Chrome中还可以运行,但是为了方便的无脑替换,我选择直接改成ms-browser-extension:
你会发现这个错误数量不少,然而这个preview版转制工具的编辑功能不是很好,连查找替换都没有。所以我们先点击左上角的save files,然后关掉他,用VS code或者别的什么编辑器把loader.js和extension_3_1_chrome.css改好。
替换全部,保存文件就行了。这时候再用转制工具打开,错误就只剩下清单错误了,参考清单样板,咱们一个个来。
- {
- "name" : "Sample extension manifest",
- "version" : "1.0.0.0",
- "author" : "Microsoft Corporation",
- "browser_action" :
- {
- "default_icon" :
- {
- "20" : "icon_20.png",
- "40" : "icon_40.png"
- },
- "default_title" : "Sample extension",
- "default_popup" : "popup.html"
- },
- "content_scripts" : [{
- "js" : ["content_script.js"],
- "matches" : ["*://*/*"]
- }
- ],
- "content_security_policy" : "script-src 'self'; object-src 'self'",
- "default_locale" : "en",
- "description" : "This is a sample extension that illustrates the JSON manifest schema",
- "options_page" : "options.html",
- "permissions" :
- [
- "*://*/*", "notifications", "cookies", "tabs", "storage", "contextMenus", "background"
- ],
- "background" :
- {
- "page" : "background.html",
- "persistent" : false
- },
- "icons" : {
- "128" : "icon_128.png",
- "16" : "icon_16.png",
- "48" : "icon_48.png"
- },
- "minimum_edge_version" : "33.14281.1000.0",
- "web_accessible_resources" : ["icon_48.png"]
- }
错误1:icon的大小未定义
错误2:.background缺少参数persistent(是否在后台持续运行),购物助手的话我想是需要的。
错误3:author太短,实际上是没有填。随意填一个
注意:这个工具目前的版本有一个Bug。按照上面修改这些清单文件的错误是正确的,但是下面报的错误却不减反增,给人造成困惑。关掉工具重新打开,再加载一次项目就会发现这些错误不见了。
别忘了点击保存,Ctrl+S快捷键目前是无效的,说多了都是泪。
至此这个项目就算转制完成了。通过Info可以看出,有8处Chrome的API被桥接成功。工具会在代码行左边添加了标识。
同时也能轻易看到还有别的API没有被桥接,这注定了目前的转制效果还不够好。
3.安装
那么如何安装那些没有正式发布的扩展?
首先浏览器地址栏输入 about:flags ,进入开发者设置页,启用开发扩展功能。
然后扩展管理页就会新增一个按钮,点击加载扩展然后选择扩展的文件夹即可。
这里就加载刚才转制的惠惠购物助手 。目前这个转制扩展虽然能跑能设置,但是还不能正常发挥他的大部分功能。那些使用较少,较普通的Chrome API的扩展,目前的转制效果就会比较好。
这个工具未来的更新着重于支持桥接更多的Chrome API。相信等到这个工具摘掉Preview的那一天,使用方法应与此篇教程写作之时几无差别,但我们轻松转制出来的扩展程序都能够良好地发挥他们的功能。
当然,更可靠的方式始终是直接开发面向Edge的扩展,不过当前文档较少,还属于起步阶段。下面就分享一篇手动创建“二维码分享扩展”的博文
“如何自己创建一个Edge 浏览器扩展” https://blogs.msdn.microsoft.com/micl/2016/09/03/edge-extension-create-a-custom-edge-extension/
扩展项目地址 https://github.com/micli/EdgeQRCode-Extension
Chrome扩展移植到Edge浏览器教程的更多相关文章
- iNeuOS工业互联网操作系统,发布3.6.4版本:云端安全控制和实时日志功能,附Chrome、Firefox和Edge浏览器测试性能对比
目 录 1. 概述... 2 2. 平台演示... 2 3. 云端控制和实时日志设计和技术... 2 4. 实时日志测试... 2 1. 概述 ...
- 清除页面广告?身为前端,自己做一款简易的chrome扩展吧
大家肯定有这样的经历,浏览网页的时候,左右两端广告,诸如“屠龙宝刀,点击就送”,以及最近火的不行的林子聪37传奇霸业什么“霸业面具,霸业吊坠”的魔性广告总是充斥我们的眼球. 当然有现成的扩展程序或者插 ...
- 自己做一款简易的chrome扩展--清除页面广告
大家肯定有这样的经历,浏览网页的时候,左右两端广告,诸如“屠龙宝刀,点击就送”,以及最近火的不行的林子聪37传奇霸业什么“霸业面具,霸业吊坠”的魔性广告总是充斥我们的眼球. 当然有现成的扩展程序或者插 ...
- chrome扩展安装图文教程
众所周知chrome的各类插件,扩展很丰富,也有很多经典的应用.但是谷歌经常被墙,无法访问,想要通过访问谷歌的应用市场来直接安装浏览器扩展会比较让人抓狂,好不容易无数次刷新后打开了页面,找到了想要的应 ...
- Chrome扩展开发基础教程(附HelloWorld)
1 概述 Chrome扩展开发的基础教程,代码基于原生JS+H5,教程内容基于谷歌扩展开发官方文档. 2 环境 Chrome 88.0.4324.96 Chromium 87.0.4280.141 B ...
- 如何创建一个Edge 浏览器扩展
随着微软Windows 10 年度更新的发布,数次延宕的Edge 扩展功能终于得到了官方正式支持.我在我的另外一个博客上发布了如何创建一个Edge 浏览器扩展的博文,链接如下: https://blo ...
- Chrome浏览器扩展开发系列之八:Chrome扩展的数据存储
Google Chrome浏览器扩展可以使用如下任何一种存储机制: HTML5的localStorage API实现的本地存储(此处略) Google的chrome.storage.* API实现的浏 ...
- Chrome浏览器扩展开发系列之一:初识Google Chrome扩展
1. Google Chrome扩展简介 Google Chrome扩展是一种软件,以增强Chrome浏览器的功能. Google Chrome扩展使用HTML.JavaScript.CS ...
- selenium初探:WebDriverException解决方法探索(以Chrome浏览器|IE浏览器|Edge浏览器为例)
环境参考:win10-64位, python3.6.3, selenium3.7 在初试selenium运行以下代码时 from selenium import webdriver browser = ...
随机推荐
- mysql小白系列_06 备份与恢复
1.使用mydumper工具全库备份. 1)源码编译安装 2)全库备份 2.误操作truncate table gyj_t1;利用mysqldump的备份和binlog日志对表gyj_t1做完全恢复. ...
- Antd 修改主题颜色填坑记录
首先,让我想说的是,现在有很多的更新,网上的一些也有的没用了, 接下来让我来分享一些我的解决方法,时间:2018.12/18. 1.和网上的一样,我用的是creat-react-app创建的项目,修改 ...
- poj2987 最大闭合权子图基础题
Firing Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 10905 Accepted: 3291 Descript ...
- pyenv,轻松切换各种python版本
pyenv,轻松切换各种python版本 解决什么问题 mac自带python2,md又不能删掉他 linux也自带python2,这玩意都过时了,也不赶紧换掉 安装pyenv git 安装 git ...
- python 串口 透传
python正常情况通过串口 serial 传输数据的时候,都是以字符串的形式发送的 str = ‘abcd’ ser.write(str.encode())#直接发送str报错,需要发送byte类 ...
- 【原创】CentOS 7搭建多实例MySQL8(想要几个搞几个)
起因 最近项目上开始重构,可能会用到主从加读写分离的情况,就想先在本地搭一个出来试试效果,结果百度一搜出来一大堆,然而自己去踩坑的没几个,绝大多数都是去抄的别人的内容,关键是实际应用中还会出错,浏览器 ...
- [jQuery插件]手写一个图片懒加载实现
教你做图片懒加载插件 那一年 那一年,我还年轻 刚接手一个ASP.NET MVC 的 web 项目, (C#/jQuery/Bootstrap) 并没有做 web 的经验,没有预留学习时间, (作为项 ...
- [自动化-脚本]001.自动领淘金币:Anyweb模拟操作
通过模拟手工操作的方法领取淘金币.该方法万能且通用,有能力的还可以自行修改脚本. 工具 软件下载 anywebscript.com 方法/步骤 1.安装软件如图所示 2.设置脚本: (1)进入网站:[ ...
- jchdl-GSL-实例 - 使用Intellij IDEA创建Mux
https://mp.weixin.qq.com/s/yP9xKeg0iHJChuMPzxdJtA https://github.com/wjcdx/jchdl/blob/master/src/org ...
- PriorityBlockingQueue 和 Executors.newCachedThreadPool()
1.PriorityBlockingQueue里面存储的对象必须是实现Comparable接口. 2.队列通过这个接口的compare方法确定对象的优先级priority. 规则是:当前和其他对象比较 ...