我有一个 Chrome 扩展,它可以注入内容脚本以及组件库来显示 UI(使用 StencilJS 构建)。我在某些网站上发现,在新状态下,我们的 UI 无法正确显示。
经过多次调试,我发现这些网站的共同点是 WinJS。看起来 WinJS 将其 on Promise 实现设置为
window.Promise
。这似乎是我们的 UI 问题的原因。
有什么方法可以在构建/运行时对我们的代码/模板库强制执行本机承诺,以防止我们干扰页面,反之亦然?我们使用 Stencil 的标准构建配置和 Webpack 将代码捆绑为 Chrome 扩展格式。
可以从以下位置检索本机
Promise
构造函数:
(async () => {})().constructor
因此,让您的内容脚本重新定义
Promise
作为全局变量,或者作为包装函数中的局部变量,这样它只会影响该脚本:
var Promise = (async () => {})().constructor;