electron-as-browser
![version](https://img.shields.io/npm/v/electron-as-browser.svg?style=flat-square)
![downloads](https://img.shields.io/npm/dt/electron-as-browser.svg?style=flat-square)
![license](https://img.shields.io/npm/l/electron-as-browser.svg?style=flat-square)
A node module to help build browser like windows in electron.
![./screenshot.png](https://github.com/hulufei/electron-as-browser/raw/HEAD/./screenshot.png)
Features
Install
npm i electron-as-browser
Usage
First, create BrowserLikeWindow in Main process
const BrowserLikeWindow = require('electron-as-browser');
let browser;
browser = new BrowserLikeWindow({
controlPanel: 'renderer/you-control-interface.html',
startPage: 'https://page-to-load-once-open',
blankTitle: 'New tab',
debug: true
});
browser.on('new-tab', ({ webContents }) => {
});
browser.on('closed', () => {
browser = null;
});
Second, style your own browser control interface(renderer process).
To make the control interface works, there are two steps:
- Setup ipc channels to receive tabs' informations
- Send actions to control the behaviours
For react users, there is a custom hook useConnect
to help you setup ipc channels.
const useConnect = require('electron-as-browser/useConnect');
const ControlPanel = () => {
const { tabs, tabIDs, activeID } = useConnect();
return (
<div>Use tabs informations to render your control panel</div>
);
}
For non-react users, you have to setup ipc channels yourself, there are three steps:
ipcRenderer.send('control-ready')
on dom readyipcRenderer.on('tabs-update', (e, tabs) => { // tabs updated })
ipcRenderer.on('active-update', (e, activeID) => { // Active tab's id updated })
Don't forget to removeListener
on ipcRenderer
once control panel unmounted.
Once setup ipc channels, you'll get all your control panel needed informations:
tabs
an object contains all the opened tab's informationstabIDs
array of opened tab's idsactiveID
current active tab's id
Construct and style your control interface as your like.
Then you can send actions to control the browser view, the actions can require from electron-as-browser/control
:
import {
sendEnterURL,
sendChangeURL,
sendGoBack,
sendGoForward,
sendReload,
sendStop,
sendNewTab,
sendSwitchTab,
sendCloseTab
} from 'electron-as-browser/control';
See example for a full control interface implementation.
Run Example
- yarn install
- yarn start:control
- yarn start