“We are implementing a new extension API, called WebExtensions—largely compatible with the model used by Chrome and Opera—to make it easier to develop extensions across multiple browsers.”
{
"manifest_version": 2,
"name": "David Blaine's Cool Extension",
"version": "1.0",
"description": "Literally MAGIC",
"icons": {
"48": "/icon.svg"
}
}
const { tabs, browserAction } = browser.browserAction;
browserAction.onClicked.addListener(async function() {
let tab = await tabs.create({
url:"https://example.org"
});
let heading = await tabs.executeScript(tab.id, {
code: `document.querySelector('h1').textContent;`
});
});
"background": {
"scripts": ["polyfill.js", "my-background.js"]
}
// or...
"background": {
"page": "my-background.html"
}
<html>
<head>
<script src="polyfill.js"></script>
<script src="my-background.js"></script>
</head>
</html>
<div class="something useful"></div>
<script src="polyfill.js"></script>
<script src="dom-library.js"></script>
<script type="module" src="my-background.js"></script>
chrome.*
browser.*
browser.*
(Promises)
browser.*
(Promises)
// Safari
safari.self.browserWindow.openTab();
// Elsewhere
browser.tabs.create();
npm i -g web-ext