【问题标题】:Full text search in Electron BrowserWindowElectron BrowserWindow 中的全文搜索
【发布时间】:2020-12-16 19:20:22
【问题描述】:

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

quick-start application 不提供任何明显的搜索功能(例如,使用 Ctrl-F 或从菜单选项)。我原以为这是一个BrowserWindow 选项(或WebContents 的一个选项),但我在文档中看不到任何有用的信息。

【问题讨论】:

  • 电子浏览器窗口不像您的网络浏览器那样是浏览器窗口!据我所知,浏览器窗口仅用于传递 gui...因此它没有任何类似浏览器的功能
  • @Coretool:我认为 Electron 不仅仅提供 GUI(例如开发人员工具)。也就是说,不支持搜索是对的:github.com/atom/electron/issues/2037
  • 好的,感谢您的更正,不是 100% 确定...

标签: node.js chromium electron


【解决方案1】:

我知道这是一个旧线程,但可能仍然与那里的人相关。 遇到了同样的问题,首先使用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】:

试试最新版刚刚添加的webContents.findInPage

【讨论】:

    【解决方案3】:

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

    我没有找到理想的解决方案(请参阅电子存储库上的 this issue),但是可以通过按照 Robson 所说的添加并添加来实现一个 hacky 解决方案

    win.on('focus', () => {
      globalShortcut.register('CommandOrControl+F', () => windows.main.send('on-find'))
    })
    win.on('blur', () => {
      globalShortcut.unregister('CommandOrControl+F')
    }
    

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

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

    【讨论】:

    • 好点,@Eva。也许可以用 before-input-event 的处理替换 globalShortcut ?根据文档here,可以检查事件中按下了哪些键。
    猜你喜欢
    • 2017-05-04
    • 2017-01-30
    • 2017-01-29
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 2020-01-09
    相关资源
    最近更新 更多