代码之家  ›  专栏  ›  技术社区  ›  Ancode

电子:细节。webContentsId在发布中消失(session.webRequest.onBeforeRequest事件)

  •  0
  • Ancode  · 技术社区  · 6 年前

    我在一家公司工作 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

    0 回复  |  直到 4 年前
    推荐文章