0.1.4 • Published 6 years ago

@wext/tabs v0.1.4

Weekly downloads
-
License
MIT
Repository
github
Last release
6 years ago

Web Extensions polyfill: tabs

Web Extensions polyfill for the browser.tabs.* API.

The goal with this package is to implmenet a subset of the Web Extensions API that works for Chrome, Firefox, Safari and Edge.

Since this is a subset of the Web Extensions API, not all properties will be abailable. The best way right now is to look in the index.d.ts which holds TypeScript definitions of the properties available. The interface specificed in the TypeScript definitions should work on all platforms.

PRs welcome 🚀

Installation

npm install --save @wext/tabs

Usage

const tabs = require('@wext/tabs')

tabs.create({ active: true, url: 'https://google.com' }).then((tab) => {
  // A tab with google is now open and focused
})

Implemented methods

FeatureChromeFirefoxSafariEdge
create
executeScript🐝
remove
update
query

Implemented events

FeatureChromeFirefoxSafariEdge
onUpdated🐝

🐝 Safari support

Since Safari has a significantly different API than all other browsers, some APIs are only implemented as closely as possible.

A small shim is required to be loaded for the following functionality to work properly:

FeaturePart
executeScriptEntire API
onUpdatedUpdates to the status property

The shim needs to be loaded on every site that you intend to use any of the mentioned APIs. This means that you need to request the <all_urls> permission to run executeScript on the currently focused page, something that isn't needed in the other browsers.

The source is in the file safari-shim.js, it should be loaded as a content script that runs at the start of every page.

Here is an example on how to include it with WebPack:

const CopyWebpackPlugin = require('copy-webpack-plugin')
const WextManifestWebpackPlugin = require('@wext/manifest/webpack')

// ...

module.exports = {
  // ...

  plugins: [
    new CopyWebpackPlugin([
      { from: require.resolve('@wext/tabs/safari-shim'), to: 'safari-shim.js' }
    ]),

    new WextManifestWebpackPlugin('safari', {
      // ...

      content_scripts: [{
        matches: ['*://*/*'],
        run_at: 'document_start',
        js: ['safari-shim.js']
      }]
    })
  ]
}
0.1.4

6 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago

0.1.0

6 years ago