Node.js 电子浏览器窗口中的全文搜索

Node.js 电子浏览器窗口中的全文搜索,node.js,chromium,electron,Node.js,Chromium,Electron,应用程序框架是否有内置的文本搜索 不提供任何明显的搜索功能(例如,使用Ctrl-F或从菜单选项)。我本以为这是一个选项(或its选项),但我在文档中看不到任何有用的内容。尝试在最新版本中添加。我知道这是一个旧线程,但可能仍然与人们相关。 也有同样的问题,首先通过使用修复,但是这个组件不能在电子2或更大的情况下正常工作 然后终于找到解决我问题的方法。与电子4一起使用 您只需将组件添加到项目中: npm install electron-find --save 在Electron主进程中添加全局快

应用程序框架是否有内置的文本搜索


不提供任何明显的搜索功能(例如,使用
Ctrl-F
或从菜单选项)。我本以为这是一个选项(或its选项),但我在文档中看不到任何有用的内容。

尝试在最新版本中添加。

我知道这是一个旧线程,但可能仍然与人们相关。 也有同样的问题,首先通过使用修复,但是这个组件不能在电子2或更大的情况下正常工作

然后终于找到解决我问题的方法。与电子4一起使用

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

npm install electron-find --save
在Electron主进程中添加全局快捷方式,以ctrl+f格式将事件发送到渲染器:

globalShortcut.register('CommandOrControl+F', () => {
    window.webContents.send('on-find');
});
然后您可以将其添加到页面(渲染器进程)


希望能有所帮助。

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

我还没有找到理想的解决方案(见electron repository上的),但按照Robson所说的做,并补充一点,就可以得到一个简单的解决方案

win.on('focus',()=>{
globalShortcut.register('CommandOrControl+F',()=>windows.main.send('on-find'))
})
win.on('blur',()=>{
globalShortcut.unregister('CommandOrControl+F')
}
请注意,如图所示,这并不理想,可能会导致几个问题:

  • 当您失去焦点时,其他应用程序可能会锁定快捷方式,即当您稍后切换回应用程序时,快捷方式将神奇地停止工作
  • 有些应用程序可以在屏幕上显示而不聚焦(我相信spotlight具有这种行为),并且在应用程序出现期间,快捷方式仍然会被应用程序捕获
  • 在上千种情况下,也会有一些奇怪的情况,你会以某种方式切换焦点,而快捷方式不会被删除

  • electron Browse窗口不像web浏览器那样是一个浏览器窗口!据我所知,浏览器窗口仅用于提供gui…正因为如此,它没有任何类似的浏览器functions@Coretool:我认为Electron不仅仅提供GUI(例如开发工具)也就是说,你说得对,搜索不受支持:好的,谢谢你的更正,我不是100%确定…这对我来说不再适用于electron 8 Good point,@Eva。也许可以用输入事件之前的
    处理来代替
    全局短切
    ?根据文档,可以检查事件中按下了哪些键。
    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()
    })