Firefox Browser Eklentileri
  • Uzantılar
  • Temalar
    • Firefox için
    • Sözlükler ve dil paketleri
    • Diğer tarayıcı siteleri
    • Android eklentileri
Giriş
Lazy tabs ön izlemesi

Lazy tabs geliştiren: 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 kullanıcı30 kullanıcı
Bu uzantıyı kullanmak için Firefox’a ihtiyacınız var
Firefox’u indir ve uzantıyı yükle
Dosyayı indir

Uzantı meta verileri

Ekran görüntüleri
Pause this tabLazy ModeOpen in paused tab
Bu uzantı hakkında
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"
}
}
3 inceleyiciden 4,3 puan aldı
Bu uzantıya puan vermek için giriş yapın
Henüz hiç puan yok

Puan kaydedildi

5
1
4
2
3
0
2
0
1
0
3 incelemenin hepsini oku
İzinler ve verilerDaha fazla bilgi al

Gerekli izinler:

  • Yer imlerini okuma ve değiştirme
  • Tarayıcı sekmelerine erişme
  • Gezinti sırasında tarayıcı etkinliğine erişme
  • Tüm web sitelerine ait verilerinize erişme
Daha fazla bilgi
Sürüm
4
Boyut
10,06 KB
Son güncelleme
4 yıl önce (3 Tem 2021)
İlgili kategoriler
  • Sekmeler
Lisans
Yalnızca GNU Genel Kamu Lisansı v3.0
Sürüm geçmişi
  • Tüm sürümleri göster
Koleksiyona ekle
Bu eklentiyi rapor et
martin tarafından geliştirilen diğer uzantılar
  • Henüz hiç puan yok

  • Henüz hiç puan yok

  • Henüz hiç puan yok

  • Henüz hiç puan yok

  • Henüz hiç puan yok

  • Henüz hiç puan yok

Mozilla'nın ana sayfasına gidin

Eklentiler

  • Hakkında
  • Firefox Eklentileri Blogu
  • Uzantı Atölyesi
  • Geliştirici Merkezi
  • Geliştirici Politikaları
  • Topluluk Blogu
  • Forum
  • Hata bildir
  • İnceleme rehberi

Tarayıcılar

  • Desktop
  • Mobile
  • Enterprise

Ürünler

  • Browsers
  • VPN
  • Relay
  • Monitor
  • Pocket
  • Bluesky (@firefox.com)
  • Instagram (Firefox)
  • YouTube (firefoxchannel)
  • Gizlilik
  • Çerezler
  • Hukuki Bilgiler

Aksi belirtilmedikçe bu sitedeki içerikler Creative Commons Attribution Share-Alike Lisansı v3.0 veya daha yeni sürümüyle lisanslanmıştır.