【问题标题】:Adding API's to chromium build in Electron framework在 Electron 框架中将 API 添加到铬构建
【发布时间】:2016-05-11 16:59:32
【问题描述】:

我想在 Window API 中用 chromium 源代码编写自定义函数。那么我们该怎么做呢?

如果对窗口 API 有疑问,这里是我的意思 click here 的链接。我想拥有类似于链接中显示的自定义属性函数。

这是一个 github 电子项目。

【问题讨论】:

    标签: google-chrome chromium electron


    【解决方案1】:

    经过一周的搜索,我终于找到了解决方案。感谢 magicae@github 的拉取请求。

    你需要看看在

    中创建你的自定义函数
    electron/atom/browser/api/lib/atom_api_web_contents.cc
    

    如你所说

    bool WebContents::GetOkOk() {
      return true;
    }
    

    并在它的头文件中定义相同

    electron/atom/browser/api/lib/atom_api_web_contents.h
    

    作为

    bool GetOkOk();
    

    最后你需要通过位于

    的webContents方法导出函数
    electron/atom/renderer/lib/web-view/web-view.js
    

    作为

    /* Public-facing API methods. - modified by Akshay Thakare */
      methods = ['getOk','getURL', ... ];
    

    你可以走了。

    最后在你编译完你的电子应用之后,

    在main.js文件中添加,

    console.log(mainWindow.webContents.getOk());
    

    你完成了。

    【讨论】:

      【解决方案2】:

      由于 JS 是面向原型的,您可以简单地扩展 BrowserWindow API

      var BrowserWindow = require('electron').BrowserWindow; // main process
      var BrowserWindow = require('electron').remote.BrowserWindow; // renderer process
      
      BrowserWindow.foo = function() {
          console.log('foo');
      }
      

      不确定您是否正在寻找更具体的东西,但我不确定您是否可以扩展它并对系统产生重大影响,您能否准确解释一下您要做什么?

      【讨论】:

      • 我想把 BrowserWindow.foo 嵌入到 chromium 源代码中,这样用户就看不到它了
      • 您使用的是 Electron,因此除非您打开 devTools,否则用户现在可以从控制台获取变量。此外,如果您真的想在底层扩展 API,唯一的方法是派生 Electron 并添加您自己的方法,然后重新构建它。
      • Electron 主进程源代码未编译,任何人都可以打开阅读。这就是为什么我已经分叉了 libchromium 但我无法弄清楚如何将我的方法嵌入其中。
      • 在我看来,你做事很艰难。我认为在主进程中以纯 JS 扩展 API 没有问题,因为任何人都无法访问它。
      • 是的,但是那些是对称加密密钥,不能保持打开状态
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 2020-12-23
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多