设置display为browser的PWA能否在第三方非PWA页面注入JS/CSS
结论
明确告诉你,完全不可能,PWA无论怎么配置manifest的display属性都无法获得类似Chrome扩展的跨站注入权限。
具体原因
- PWA本质上就是普通Web应用,全程受浏览器同源策略的严格约束,和Chrome扩展的权限体系是完全独立的两套逻辑,Web应用没有任何途径申请浏览器开放给扩展的特殊宿主权限。
- manifest.json中的
display属性仅用于控制PWA启动后的窗口呈现样式:standalone是隐藏浏览器地址栏、工具栏,以类原生应用的独立窗口运行;browser就是普通的浏览器标签页打开模式。该属性仅调整UI呈现,完全不涉及权限等级的变更。 - 当用户从你的PWA跳转到第三方站点(如Reddit.com)时,页面上下文已经切换到第三方站点的源,你的PWA的相关脚本完全失去对该页面的控制权,既无法读取第三方页面的内容,也不可能向该页面注入任何JS、CSS代码。
- Chrome扩展的跨站注入能力需要用户主动安装扩展,且扩展提前在自身manifest中声明对应权限、获得用户授权之后才能生效,这类权限完全不对普通Web应用(包括PWA)开放。
补充说明
如果你的需求是向第三方站点注入脚本和样式,唯一的实现路径是开发对应浏览器的扩展程序,通过PWA没有办法实现该需求。
内容的提问来源于stack exchange,提问作者Volomike
相关产品推荐
相关产品推荐

