mirror of
https://github.com/mdn/webextensions-examples.git
synced 2026-04-17 14:59:12 +02:00
75 lines
1.6 KiB
JavaScript
75 lines
1.6 KiB
JavaScript
function firstUnpinnedTab(tabs) {
|
|
for (var tab of tabs) {
|
|
if (!tab.pinned) {
|
|
return tab.index;
|
|
}
|
|
}
|
|
}
|
|
|
|
document.addEventListener("click", function(e) {
|
|
function callOnActiveTab(callback) {
|
|
chrome.tabs.query({currentWindow: true}, function(tabs) {
|
|
for (var tab of tabs) {
|
|
if (tab.active) {
|
|
callback(tab, tabs);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
if (e.target.id === "tabs-move-beginning") {
|
|
callOnActiveTab((tab, tabs) => {
|
|
var index = 0;
|
|
if (!tab.pinned) {
|
|
index = firstUnpinnedTab(tabs);
|
|
}
|
|
chrome.tabs.move([tab.id], {index});
|
|
});
|
|
}
|
|
|
|
if (e.target.id === "tabs-move-end") {
|
|
callOnActiveTab((tab, tabs) => {
|
|
var index = -1;
|
|
if (tab.pinned) {
|
|
var lastPinnedTab = Math.max(0, firstUnpinnedTab(tabs) - 1);
|
|
index = lastPinnedTab;
|
|
}
|
|
chrome.tabs.move([tab.id], {index});
|
|
});
|
|
}
|
|
|
|
else if (e.target.id === "tabs-duplicate") {
|
|
callOnActiveTab((tab) => {
|
|
chrome.tabs.duplicate(tab.id);
|
|
});
|
|
}
|
|
|
|
else if (e.target.id === "tabs-reload") {
|
|
callOnActiveTab((tab) => {
|
|
chrome.tabs.reload(tab.id);
|
|
});
|
|
}
|
|
|
|
else if (e.target.id === "tabs-remove") {
|
|
callOnActiveTab((tab) => {
|
|
chrome.tabs.remove(tab.id);
|
|
});
|
|
}
|
|
|
|
else if (e.target.id === "tabs-create") {
|
|
chrome.tabs.create({url: "https://developer.mozilla.org/en-US/Add-ons/WebExtensions"});
|
|
}
|
|
|
|
else if (e.target.id === "tabs-alertinfo") {
|
|
callOnActiveTab((tab) => {
|
|
let props = "";
|
|
for (let item in tab) {
|
|
props += `${ item } = ${ tab[item] } \n`;
|
|
}
|
|
alert(props);
|
|
});
|
|
}
|
|
|
|
e.preventDefault();
|
|
});
|