Doplnky pre prehliadač Firefox
  • Rozšírenia
  • Témy vzhľadu
    • Pre Firefox
    • Slovníky a jazykové balíky
    • Stránky ostatných prehliadačov
    • Doplnky pre Android
Prihlásiť sa
Náhľad témy Lazy tabs

Lazy tabs Autor: 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)
30 používateľov30 používateľov
Na použitie tohto rozšírenia budete potrebovať Firefox
Stiahnuť Firefox a získať rozšírenie
Stiahnuť súbor

Metadáta rozšírenia

Snímky obrazovky
Pause this tabLazy ModeOpen in paused tab
O tomto rozšírení
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"
}
}
Hodnotené 4,3 od 3 recenzentov
Ak chcete ohodnotiť toto rozšírenie, musíte sa prihlásiť
Doplnok zatiaľ nie je ohodnotený

Hodnotenie bolo uložené

5
1
4
2
3
0
2
0
1
0
Prečítajte si 3 recenzie
Povolenia a údajeĎalšie informácie

Požadované oprávnenia:

  • Čítať a upravovať záložky
  • Pristupovať ku kartám prehliadača
  • Pristupovať k aktivitám prehliadača v priebehu prehliadania
  • Pristupovať k údajom pre všetky webové stránky
Ďalšie informácie
Verzia
4
Veľkosť
10,06 kB
Posledná aktualizácia
pred 4 rokmi (3. júl 2021)
Príbuzné kategórie
  • Karty
Licencia
Len GNU General Public License v3.0
História verzií
  • Zobraziť všetky verzie
Pridať do kolekcie
Nahlásiť tento doplnok
Ďalšie rozšírenia od autora martin
  • Doplnok zatiaľ nie je ohodnotený

  • Doplnok zatiaľ nie je ohodnotený

  • Doplnok zatiaľ nie je ohodnotený

  • Doplnok zatiaľ nie je ohodnotený

  • Doplnok zatiaľ nie je ohodnotený

  • Doplnok zatiaľ nie je ohodnotený

Prejsť na domovskú stránku Mozilly

Doplnky

  • O nás
  • Blog o doplnkoch pre Firefox
  • Workshop tvorby rozšírenia
  • Centrum pre vývojárov
  • Pravidlá pre vývojárov
  • Komunitný blog
  • Fórum
  • Nahlásiť chybu
  • Pokyny pre recenzentov

Prehliadače

  • Desktop
  • Mobile
  • Enterprise

Produkty

  • Browsers
  • VPN
  • Relay
  • Monitor
  • Pocket
  • Bluesky (@firefox.com)
  • Instagram (Firefox)
  • YouTube (firefoxchannel)
  • Súkromie
  • Cookies
  • Právne informácie

Ak nie je uvedené inak, obsah tejto stránky je dostupný pod licenciou Creative Commons Attribution Share-Alike License v3.0 alebo jej akejkoľvek vyššej verzie.