问题一:浏览器进程在插件运行中起到什么作用?
浏览器进程在插件运行中起到什么作用?
参考回答:
更多起到桥梁作用,作为中转可以实现Extension Page和content_script.js之间的消息通信。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/623077
问题二:chrome插件的版本发展历程能简单说说么?
chrome插件的版本发展历程能简单说说么?
参考回答:
chrome插件存在三个版本,分别是Manifest V1、Manifest V2和Manifest V3。其中MV1版本已经被废弃了,目前市面上存在MV2和MV3版本,以MV2为主流,在被MV3慢慢取代。时间线:
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/623079
问题三:Manifest V2有哪些新特性?
Manifest V2有哪些新特性?
参考回答:
• 设置了默认的内容安全策略`script-src 'self'; object-src 'self';`。有关内容安全策略的详细配置,可以参考MDN文档;
• 默认情况下,插件包内的资源不再可供外部网站使用。需要通过清单web_accessible_resources属性将其显式列入白名单;
• browser action API更改;
• page action API更改;
• chrome.extension 代替 chrome.self 来指向插件本身;
• chrome.extension.getTabContentses和chrome.extension.getExtensionTabs废弃,使用extension.getViews替代;
• Port.tab废弃,使用runtime.Port替代。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/623080
问题四:Manifest V3有哪些新特性?
Manifest V3有哪些新特性?
参考回答:
• Service worker替换Background Page;
• 网络请求修改废弃webRequest API使用新的 declarativentrequest API 来处理;
• 不再允许执行远程托管的代码,只能执行扩展包内包含的JS;
• Promises 已经被添加到许多方法中,但仍支持回调作为替代方法;
• Browser Action API 和 Page Action API被统一为单独的Action API;
• Web可访问的资源,可以只对指定的站点和扩展可用;
• 内容安全策略(CSP),现在可以为单个对象中的不同执行上下文指定单独的CSP;
• executeScript的变化,不能再执行任意字符串,只能执行脚本文件和函数。
关于本问题的更多回答可点击原文查看:
https://developer.aliyun.com/ask/623081
问题五:Manifest V2切换MV3会带来什么问题?
Manifest V2切换MV3会带来什么问题?
参考回答:
来的问题
• 由于background不再支持page页面配置background.html,因此也无法调用window对象上的XMLHttpRequest来构建ajax请求,也就是说我们不能像V2版本一样,在background.html中使用XMLHttpRequest来发送请求了,而是需要使用fetch来获取接口数据;
• 由于service workers是短暂的,在不使用时会终止,这意味着它们在整个插件运行期间会不断的启动、运行和终止,也就是不稳定的;因此我们可能需要对V2中background.js的代码逻辑进行一些改造,以往我们会习惯将一些数据直接存储到全局变量,比如像下面这样:
// V2 background.jslet saveUserName = "";
// 其他页面,比如content-script或者popup中存储数据chrome.runtime.onMessage.addListener(({ type, name }) => { if (type === "set-name") { saveUserName = name; }});
// 点击popup时展示数据chrome.action.onClicked.addListener((tab) => { // 这里saveUserName可能为空字符串 console.log(saveUserName, "saveUserName");});
关于本问题的更多回答可点击原文查看: