https://github.com/zardoy/read-browser-tabs
Get browser tab info
https://github.com/zardoy/read-browser-tabs
browser-tabs nodejs typescirpt
Last synced: about 1 year ago
JSON representation
Get browser tab info
- Host: GitHub
- URL: https://github.com/zardoy/read-browser-tabs
- Owner: zardoy
- License: mit
- Created: 2021-01-12T04:32:11.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-05-09T10:35:44.000Z (about 5 years ago)
- Last Synced: 2025-03-18T13:27:57.992Z (over 1 year ago)
- Topics: browser-tabs, nodejs, typescirpt
- Language: TypeScript
- Homepage: https://npmjs.com/read-browser-tabs
- Size: 920 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.MD
- License: LICENSE
Awesome Lists containing this project
README
# Get Browser Tabs · [](https://npmjs.com/package/read-browser-tabs) [](https://github.com/zardoy/read-browser-tabs/tree/master/src) [](https://github.com/semantic-release/semantic-release)
> Supported platforms: macOS only. Supported browsers: Safari, Google Chrome.
Easily retrieve information about active tab from Node.js.
## Usage
```ts
import { getActiveTabInfo } from "read-browser-tabs";
// if google and chrome are running safari always takes precedence by default
await getActiveTabInfo();
//=>
// {
// erroredBrowsers: [],
// tabInfo: {
// url: 'https://github.com/zbrateam/Zebra',
// title: 'GitHub - zbrateam/Zebra: A Useful Package Manager for iOS',
// browserTitle: 'safari'
// }
// }
await getActiveTabInfo({
// try to get data from google chrome and if it's not running then try from safari
browsers: ["google chrome", "safari"]
});
//=>
// {
// erroredBrowsers: [],
// tabInfo: {
// url: 'https://github.com/jsdoc/jsdoc',
// title: 'jsdoc/jsdoc: An API documentation generator for JavaScript.',
// browserTitle: 'google chrome'
// }
// }
// for example only safari is running
await getActiveTabInfo({
// but here we are trying to get info from google chrome ONLY
browsers: ["google chrome"]
});
// {
// erroredBrowsers: [],
// tabInfo: null
// }
```
## Things to Note
- It usually takes 50 - 300ms to get info. It's a good practice to add timeout for 500ms.
- When you first run this script from app user will see the message: 
## Why?
I used [get-chrome-tabs](https://www.npmjs.com/package/get-chrome-tabs) in past, but it has a **huge** performance issue, with handling multiple opened windows. That's because it travels over all windows and tabs and of course it takes A LOT of time. This module solves the problem by accessing only the active (focused) tab. And it supports Safari!
### It Could be Better
This module VERY unreliable, like it can break in any day. Apple created JXA and it's very bad. Sometimes I get `execution error: Error: Error: AppleEvent handler failed.` because of `.properties()`. And it seems there is no official documentation for JXA, so I don't want waste my time any more. That's why this module doesn't have wide browsers support (but it could), I just don't know how to introspect properties on Application instance. Also see [this answer](https://stackoverflow.com/a/41923909/14982288).
Please, let me know if you have an idea how to make this module work on all platforms.