Merge pull request #120 from toddtarsi/work-without-node-anything

feat: work without any nodeIntegration requirements
This commit is contained in:
Thomas Brouard 2021-07-19 12:54:12 +02:00 committed by GitHub
commit 55d1f1a492
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 4 deletions

View file

@ -23,7 +23,6 @@ Electron-tabs uses webviews, so you first need to use the following `webPreferen
```js ```js
const mainWindow = new electron.BrowserWindow({ const mainWindow = new electron.BrowserWindow({
webPreferences: { webPreferences: {
nodeIntegration: true,
webviewTag: true webviewTag: true
} }
}); });

View file

@ -4,7 +4,6 @@ const app = electron.app;
app.on('ready', function () { app.on('ready', function () {
const mainWindow = new electron.BrowserWindow({ const mainWindow = new electron.BrowserWindow({
webPreferences: { webPreferences: {
nodeIntegration: true,
webviewTag: true webviewTag: true
} }
}); });

View file

@ -1,5 +1,3 @@
const EventEmitter = require("events");
if (!document) { if (!document) {
throw Error("electron-tabs module must be called in renderer process"); throw Error("electron-tabs module must be called in renderer process");
} }
@ -22,6 +20,19 @@ if (!document) {
document.getElementsByTagName("head")[0].appendChild(styleTag); document.getElementsByTagName("head")[0].appendChild(styleTag);
})(); })();
/**
* This makes the browser EventTarget API work similar to EventEmitter
*/
class EventEmitter extends EventTarget {
emit (type, ...args) {
this.dispatchEvent(new CustomEvent(type, { detail: args }));
}
on (type, fn) {
this.addEventListener(type, ({ detail }) => fn.apply(this, detail));
}
}
class TabGroup extends EventEmitter { class TabGroup extends EventEmitter {
constructor (args = {}) { constructor (args = {}) {
super(); super();