我尝试使用contents.findInPage。 我在index.js中有代码:
const { webContents } = require('electron')
webContents.on('found-in-page', (event, result) => {
if (result.finalUpdate) webContents.stopFindInPage('clearSelection')
})
const requestId = webContents.findInPage('api')
console.log(requestId)
以及组件中的代码:
searchText(value){
this.query = value;
if (this.query.length > 0) {
ipcRenderer.send('api', this.query);
}
}
我在此answer的示例上编写了此代码。 但是功能发现不起作用。我不明白如何发送要搜索的文本和要搜索的词。
如何使用findInPage函数?
答案 0 :(得分:1)
对不起,我对另一个问题的回答还不够清楚(那是2年前!我不太记得了,但是我会给它一个机会)
这是webcontents和IPCMain的文档
这是我main.development.js(mainWindow和ipc通信的全局变量)中的内容:
mainWindow.on('focus', () => {
globalShortcut.register('CmdorCtrl+F', () => {
mainWindow.webContents.send('find_request', '');
});
});
mainWindow.webContents.on('found-in-page', (event, result) => {
if (result.finalUpdate) {
mainWindow.webContents.stopFindInPage('keepSelection');
}
});
ipcMain.on('search-text', (event, arg) => {
mainWindow.webContents.findInPage(arg);
});
mainWindow.on('blur', () => {
globalShortcut.unregister('CmdorCtrl+F');
});
然后我为CmdorCtrl + F制作了一个ipc侦听器:
ipcRenderer.on('find_request', () => {
const modalbox = document.getElementById('modalbox');
if (modalbox.style.display === 'block') {
modalbox.style.display = 'none';
} else {
modalbox.style.display = 'block';
}
});
然后我创建了一个模式搜索框:
const searchBox = (
<div
id="modalbox"
style={{ display: 'none', position: 'fixed', zIndex: 1 }}
><input type="text" onChange={Calls.searchPage} />
</div>);
onchange将输入文本发送到ipc侦听器:
static searchPage(event) {
ipcRenderer.send('search-text', event.target.value);
}
我希望这足以使您修复它:)