我在一家公司工作
Electron
我有几个
webviews
加载共享同一会话(persist:id类型)的不同网站。我开发了一个adblock系统,它在webview级别工作,工作方式如下:
let mySession = session.fromPartition(âpersist:idâ);
session.webRequest.onBeforeRequest(['*://*./*'], (details, cb) => {
if (adBlockActiveForSession(details.webContentsId)){
// adblock operations
}
}
这
在开发和生产中工作
.然而,当我创建
发布/可执行,它不工作
.我注意到,
在该版本中,详细信息没有webContentsId
,但在发展中确实如此。
我还要检查一下
documentation
它表示webContentsId是onBeforeRequest回调中的可选值。
为什么它在开发中有效,但在我创建发行版时无效?webContentsId什么时候可以在参数详细信息中访问,什么时候不能访问?在发布软件包时,我应该使用一些标志?我应该认为这是一个bug吗?有人经历过同样的问题吗?
非常感谢。
注意:为了确保webview有它的webContent id,在加载url之前,我加载一个空站点,在dom就绪之后,我开始加载真正的url。
操作系统:
在Ubuntu、Mac中开发,在Mac、Windows中发布。两个版本都有相同的问题。
预期行为
onBeforeRequest应返回创建请求的webContent的信息。这些信息是内部细节。webContentsId
实际行为
onBeforeRequest在开发版本中工作且产品处于打开状态时返回它,但是,当执行包以创建发布时,onBeforeRequest不会返回执行请求的webContent的webContent SID