Přidatki za Firefox Browser
  • Rozšěrjenja
  • Drasty
    • za Firefox
    • Słowniki a rěčne pakćiki
    • Druhe sydła wobhladowaka
    • Přidatki za Android
Přizjewić
Přehlad Lazy tabs

Lazy tabs wot martin

Open links in paused (discarded) tabs and pause selected tabs (from the right-click context menu). Also with "Lazy Mode".

4.3 (3 reviews)4.3 (3 reviews)
31 wužiwarjow31 wužiwarjow
Trjebaće Firefox, zo byšće tute rozšěrjenje wužiwał
Firefox sćahnyć a rozšěrjenje wobstarać
Dataju sćahnyć

Metadaty rozšěrjenja

Fota wobrazowki
Pause this tabLazy ModeOpen in paused tab
Wo tutym rozšěrjenju
This extension allows you to discard tabs and open links, bookmarks and bookmark folders in discarded tabs.

It adds a button on the tab bar that turns on/off the "Lazy Mode".
When Lazy Mode is ON all new background tabs are automatically paused.

You can't pause the current active tab, just switch to another tab and pause it from there.
If you have bookmarks with URLs like addons.mozilla.org or support.mozilla.org, you should open them from the context menu item, Lazy Mode can't intercept requests to that sites for security reasons, I guess. This only happens with bookmarks and Lazy mode, otherwise everything works fine.

This add-on needs some permissions. If you're worried about that, just read the source code. It will take you less than a minute.

BACKGROUND.JS

let lazyMode = false;
let lastOpenedTabId = 1;

function initialUpdate(tabs){
for (let tab of tabs) {
updateLastOpenedTabId(tab.id);
}
}

function updateLastOpenedTabId(tabId){
if (tabId > lastOpenedTabId) {
lastOpenedTabId = tabId;
}
}

function onDiscarded() {
}

function onError(error) {
console.log(`Error: ${error}`);
}

function onCreatedItem() {
if (browser.runtime.lastError) {
console.log(`Error: ${browser.runtime.lastError}`);
}
}

function onCreatedTab(tab) {
updateLastOpenedTabId(tab.id);
}

function createDiscardedTab(tabUrl) {
var creating = browser.tabs.create({
url:tabUrl,
active:false,
discarded:true
});
creating.then(onCreatedTab, onError);
}

function onGetBookmarkId(bookmarks) {
if (bookmarks[0].url) {
createDiscardedTab(bookmarks[0].url)
} else {
getFolderChildren(bookmarks[0].id);
}
}

function getFolderChildren(bookmarkId) {
var gettingChildren = browser.bookmarks.getChildren(bookmarkId);
gettingChildren.then(onGetFolderChildren, onError);
}

function onGetFolderChildren(children) {
for (child of children) {
if (child.url){
createDiscardedTab(child.url);
} else {
getFolderChildren(child.id);
}
}
}

function toggleLazyMode(isEnabled){
if (!isEnabled) {
let querying = browser.tabs.query({});
querying.then(initialUpdate, onError);
browser.browserAction.setTitle({title: "Back to normal"});
browser.browserAction.setIcon({path: "playButton.svg"});
lazyMode = true;
} else {
browser.browserAction.setTitle({title: null});
browser.browserAction.setIcon({path: null})
lazyMode = false;
}
}

function discardThisTabs(tabs) {
var tabIds = [];
for (let tab of tabs) {
tabIds.push(tab.id);
}
var discarding = browser.tabs.discard(tabIds);
discarding.then(onDiscarded, onError);
}

function discardNewTab(tabId, url) {
var removing = browser.tabs.remove(tabId);
removing.then(function(tab) {
createDiscardedTab(url);
}, onError);
}

browser.menus.create({
id: "open-link-discarded",
title: "Open link in paused tab",
contexts: ["link"]
}, onCreatedItem);

browser.menus.create({
id: "open-bookmark-discarded",
title: "Open in paused tab",
contexts: ["bookmark"]
}, onCreatedItem);

browser.menus.create({
id: "discard-tab",
title: "Pause this tab",
contexts: ["tab"]
}, onCreatedItem);

browser.menus.create({
id: "discard-highlighted-tabs",
title: "Pause selected tabs",
contexts: ["tab"]
}, onCreatedItem);

browser.menus.onClicked.addListener((info, tab) => {
switch (info.menuItemId) {
case "open-link-discarded":
createDiscardedTab(info.linkUrl);
break;
case "open-bookmark-discarded":
let gettingBookmarks = browser.bookmarks.get(info.bookmarkId);
gettingBookmarks.then(onGetBookmarkId, onError);
break;
case "discard-highlighted-tabs":
let querying = browser.tabs.query({highlighted: true, active: false});
querying.then(discardThisTabs, onError);
break;
case "discard-tab":
discardThisTabs([tab]);
}
});

browser.browserAction.onClicked.addListener(() => {
toggleLazyMode(lazyMode);
});

browser.tabs.onCreated.addListener((tab) => {
if (tab.active && tab.id > lastOpenedTabId) {
updateLastOpenedTabId(tab.id);
}
});

browser.webRequest.onBeforeRequest.addListener((requestDetails)=>{
if(lazyMode){
if (!requestDetails.documentUrl && requestDetails.tabId > lastOpenedTabId){
discardNewTab(requestDetails.tabId, requestDetails.url);
}
}
},
{urls: ["<all_urls>"]}
);

browser.webNavigation.onCreatedNavigationTarget.addListener((details)=>{
if(lazyMode){
discardNewTab(details.tabId,details.url);
}
});

MANIFEST.JSON

{
"manifest_version": 2,
"name":"Lazy tabs",
"description":"Open links in paused (discarded) tabs and pause selected tabs (from the right-click context menu). Also with \"Lazy Mode\".",
"version":"3",
"developer": {
"name": "martin"
},
"background": {
"scripts": ["background.js"]
},
"permissions": [
"<all_urls>",
"webRequest",
"webNavigation",
"menus",
"bookmarks",
"tabs"
],
"browser_action": {
"browser_style": true,
"default_icon": "pauseButton.svg",
"default_title": "Lazy mode",
"default_area": "tabstrip"
}
}
Z 4,3 wot 3 pohódnoćacych pohódnoćeny
Přizjewće so, zo byšće tute rozšěrjenje pohódnoćił
Hišće pohódnoćenja njejsu

Hwězdne pohódnoćenje je so składowało

5
1
4
2
3
0
2
0
1
0
3 pohódnoćenja čitać
Prawa a datyDalše informacije

Trěbne prawa:

  • Zapołožki čitać a změnić
  • Mějće přistup k rajtarkam wobhladowaka
  • Mějće přistup k aktiwiće wobhladowaka za nawigaciju
  • Přistup k wašim datam za wšě websydła měć
Dalše informacije
Wersija
4
Wulkosć
10,06 KB
Posledni raz zaktualizowany
4 χρόνια πριν (3 Ιουλ 2021)
Přiwuzne kategorije
  • Rajtarki
Licenca
Jenož licenca GNU General Public License v3.0
Wersijowa historija
  • Wšě wersije pokazać
Zběrce přidać
Tutón přidatk zdźělić
Wjace rozšěrjenjow wot martin
  • Hišće pohódnoćenja njejsu

  • Hišće pohódnoćenja njejsu

  • Hišće pohódnoćenja njejsu

  • Hišće pohódnoćenja njejsu

  • Hišće pohódnoćenja njejsu

  • Hišće pohódnoćenja njejsu

K startowej stronje Mozilla

Přidatki

  • Wo
  • Blog přidatkow Firefox
  • Dźěłarnička rozšěrjenjow
  • Wuwiwarski róžk
  • Wuwiwarske prawidła
  • Blog zhromadźenstwa
  • Forum
  • Programowy zmylk zdźělić
  • Směrnica za pohódnoćenja

Wobhladowaki

  • Desktop
  • Mobile
  • Enterprise

Produkty

  • Browsers
  • VPN
  • Relay
  • Monitor
  • Pocket
  • Bluesky (@firefox.com)
  • Instagram (Firefox)
  • YouTube (firefoxchannel)
  • Priwatnosć
  • Placki
  • Prawniske

Jeli nic hinak zapisane, so wobsah na tutym sydle pod Creative Commons Attribution Share-Alike License v3.0 abo poždźišej wersiju licencuje.