在Electron BrowserWindow中进行全文搜索

时间:2015-11-20 23:28:11

标签: node.js chromium electron

Electron应用程序框架是否具有内置文本搜索功能?

quick-start application并未提供任何明显的搜索功能(例如,使用Ctrl-F或菜单选项)。我原本预计这会是BrowserWindow选项(或其WebContents的选项),但我在文档中看不到任何有用的内容。

3 个答案:

答案 0 :(得分:3)

尝试在最新版本中添加webContents.findInPage

答案 1 :(得分:0)

我知道这是一个旧线程,但可能仍然与那里的人们有关。 遇到相同的问题,并且首先使用electron-in-page-search进行了修复,但是该组件无法在Electron 2或更高版本上正常使用。

然后终于发现electron-find解决了我的问题。与Electron 4一起使用。

您只需将组件添加到您的项目中即可:

npm install electron-find --save

在Electron主进程中添加全局快捷方式,以ctrl + f的形式将事件发送到渲染器:

globalShortcut.register('CommandOrControl+F', () => {
    window.webContents.send('on-find');
});

然后您可以将其添加到页面(渲染过程)

const remote = require('electron').remote;
const FindInPage = require('electron-find').FindInPage;

let findInPage = new FindInPage(remote.getCurrentWebContents());

ipcRenderer.on('on-find', (e, args) => {
  findInPage.openFindWindow()
})

希望有帮助。

答案 2 :(得分:0)

Robson Hermes提供的解决方案存在问题。根据定义,cat Africanfile cat Europeanfile 是全局的,因此即使应用程序未聚焦,其快捷方式也会被检测到。这将导致Ctrl + F快捷方式从其他任何地方“被盗”。

我没有找到理想的解决方案(请参见电子仓库中的this issue),但是可以通过执行罗布森所说的并添加

globalShortcut

请注意,如here所示,这并不理想,可能会导致多个问题:

  1. 当您失去焦点时,其他应用程序可以锁定该快捷方式,即,稍后您切换回该应用程序时,该快捷方式将神奇地停止工作。
  2. 某些应用程序可能会在没有聚焦的情况下出现在屏幕上(我认为聚光灯具有这种行为),并且在应用程序出现期间,快捷方式仍会被您的应用程序捕获。
  3. 在一千种情况下,还会有一些奇怪的情况,您会以某种方式切换焦点并且快捷方式不会被删除。