Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

electron-as-browser

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

electron-as-browser

Make electron like browser easier and flexible.

  • 1.0.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

electron-as-browser

versiondownloadslicense

A node module to help build browser like windows in electron.

./screenshot.png

Features

  • Made with BrowserView instead of webview
  • Pluggable control panel (Navigation interface)
  • Exposed webContents and BrowserWindow
  • Tricky auto resize just out of the box

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 // will open controlPanel's devtools
});

// Trigger on new tab created
browser.on('new-tab', ({ webContents }) => {
  // Customize webContents if your like
});

browser.on('closed', () => {
  // Make it garbage collected
  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 ready
  • ipcRenderer.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 informations
  • tabIDs array of opened tab's ids
  • activeID 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, // sendEnterURL(url) to load url
  sendChangeURL, // sendChangeURL(url) on addressbar input change
  sendGoBack,
  sendGoForward,
  sendReload,
  sendStop,
  sendNewTab, // sendNewTab([url])
  sendSwitchTab, // sendSwitchTab(toID)
  sendCloseTab // sendCloseTab(id)
} from 'electron-as-browser/control';

See example for a full control interface implementation.

Run Example

  • yarn install
  • yarn start:control
  • yarn start

API

Keywords

FAQs

Package last updated on 23 Aug 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc