Google chrome 添加API';s到铬在电子框架内构建

Google chrome 添加API';s到铬在电子框架内构建,google-chrome,chromium,electron,Google Chrome,Chromium,Electron,我想用chromium源代码在WindowAPI中编写自定义函数。那我们怎么做呢 如果对windowapi有疑问,这里有一个链接指向我的意思。我希望自定义属性函数与链接中显示的类似 它是用于github electron项目的。由于JS是面向原型的,您只需扩展BrowserWindowAPI即可 var BrowserWindow = require('electron').BrowserWindow; // main process var BrowserWindow = require('e

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

如果对windowapi有疑问,这里有一个链接指向我的意思。我希望自定义属性函数与链接中显示的类似


它是用于github electron项目的。

由于JS是面向原型的,您只需扩展
BrowserWindow
API即可

var BrowserWindow = require('electron').BrowserWindow; // main process
var BrowserWindow = require('electron').remote.BrowserWindow; // renderer process

BrowserWindow.foo = function() {
    console.log('foo');
}

不确定您是否正在寻找更具体的内容,但我不确定您是否可以扩展它,从而对系统产生重大影响,您能否准确地解释您正在尝试做什么?

经过一周的搜索,我终于找到了解决方案。多亏了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
作为

最后,您需要通过位于中的WebContent方法导出函数

electron/atom/renderer/lib/web-view/web-view.js
作为

你可以走了

最后,在你编译电子应用程序之后

在main.js文件add中

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

您的操作已经完成。

我想将BrowserWindow.foo嵌入到chromium源代码中,这样您使用的Electron用户就看不到它,所以除了打开devTools之外,用户现在可以从控制台获取变量。另外,如果你真的想在幕后扩展API,唯一的方法就是fork-Electron并添加你自己的方法,然后重新构建它。Electron主进程源代码没有编译,任何人都可以打开并阅读。这就是为什么我已经分叉了libchromium,但我无法想出如何将我的方法嵌入其中。在我看来,你做的事情很艰难。我认为在主进程中用纯JS扩展API没有问题,因为任何人都无法访问它。是的,但这些是对称加密密钥,不能保持打开状态
/* Public-facing API methods. - modified by Akshay Thakare */
  methods = ['getOk','getURL', ... ];
console.log(mainWindow.webContents.getOk());