All Projects → hulufei → electron-as-browser

hulufei / electron-as-browser

Licence: MIT license
Make electron like browser easy and flexible.

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to electron-as-browser

startpage
a simple and customisable startpage
Stars: ✭ 137 (+85.14%)
Mutual labels:  newtab
tabatha
New Tab Replacement for Chrome and Firefox - Sleek, Dark, and Minimal
Stars: ✭ 27 (-63.51%)
Mutual labels:  newtab
Viewfinder
📷 BrowserBox - Remote isolated browser API for security, automation visibility and interactivity. Run on our cloud, or bring your own. Full scope double reverse web proxy with multi-tab, mobile-ready browser UI frontend. Plus co-browsing, advanced adaptive streaming, secure document viewing and more! But only in the Pro version. Get BB today! Se…
Stars: ✭ 1,741 (+2252.7%)
Mutual labels:  browserview
Anime-New-Tab
Collection of random anime theme wallpaper, bangumi list (bilibili) and other features of the Chrome new tab page plugin(动漫主题随机壁纸Chrome新标签页插件)
Stars: ✭ 18 (-75.68%)
Mutual labels:  newtab
tiktok
🕑 A countdown chrome extension for tasks/events/whatever.
Stars: ✭ 22 (-70.27%)
Mutual labels:  newtab
tabtrekker
Explore the world one tab at a time (Firefox addon).
Stars: ✭ 42 (-43.24%)
Mutual labels:  newtab
perfect-home
firefox newtab/home replacement
Stars: ✭ 101 (+36.49%)
Mutual labels:  newtab
myNewTabMod
修改myNewTab这个扩展,使其在火狐41上实现新标签页和扩展签名
Stars: ✭ 14 (-81.08%)
Mutual labels:  newtab
myNewTabWE
myNewTabMod这个扩展的WebExtension版本,由于API限制部分功能无法实现
Stars: ✭ 14 (-81.08%)
Mutual labels:  newtab

electron-as-browser

versiondownloadslicense

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

./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 // 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' information 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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].