使用本机 Promise 覆盖 WinJS Promise 作为 Chrome 扩展内容脚本?

问题描述 投票:0回答:1

我有一个 Chrome 扩展,它可以注入内容脚本以及组件库来显示 UI(使用 StencilJS 构建)。我在某些网站上发现,在新状态下,我们的 UI 无法正确显示。

经过多次调试,我发现这些网站的共同点是 WinJS。看起来 WinJS 将其 on Promise 实现设置为

window.Promise
。这似乎是我们的 UI 问题的原因。

有什么方法可以在构建/运行时对我们的代码/模板库强制执行本机承诺,以防止我们干扰页面,反之亦然?我们使用 Stencil 的标准构建配置和 Webpack 将代码捆绑为 Chrome 扩展格式。

typescript webpack promise winjs stenciljs
1个回答
0
投票

可以从以下位置检索本机

Promise
构造函数:

(async () => {})().constructor

因此,让您的内容脚本重新定义

Promise
作为全局变量,或者作为包装函数中的局部变量,这样它只会影响该脚本:

var Promise = (async () => {})().constructor;
© www.soinside.com 2019 - 2024. All rights reserved.