Tab sperren

Schrauberecke: Hier geht es um optische und funktionelle Veränderungen (ohne Themes oder Personas) von Firefox oder von Webseiten per CSS-Codes oder JavaScript.
Benutzeravatar
aborix
Senior-Mitglied
Beiträge: 3917
Registriert: So, 06. Sep 2009 0:57

Re: Tab sperren

#16

Beitrag von aborix » Fr, 26. Jan 2018 19:15

Pentomino hat geschrieben:
Mi, 24. Jan 2018 10:21
Lässt sich das so einrichten, dass zB. ein angepinnter Tab nach dem Neustart von Firefox immer noch "gesperrt" ist?
Nein. Auch beim Verschieben in ein anderes Fenster geht die Sperrung verloren.

Es lässt sich jedoch machen, dass beim Sperren ein Tab automatisch auch angeheftet wird und beim Ablösen automatisch entsperrt wird (Anheften ohne Sperren ist weiterhin möglich):

Code: Alles auswählen

(function() {
  if (location != 'chrome://browser/content/browser.xul')
    return;

  let tabContextMenu = document.getElementById('tabContextMenu');

  let lockItem = document.createElement('menuitem');
  lockItem.id = 'context_lockTab';
  lockItem.setAttribute('label', 'Tab sperren');
  lockItem.setAttribute('oncommand',
    'gBrowser.pinTab(TabContextMenu.contextTab); TabContextMenu.contextTab.locked = true');
  let refItem = document.getElementById('context_pinTab');
  tabContextMenu.insertBefore(lockItem, refItem);

  let unlockItem = document.createElement('menuitem');
  unlockItem.id = 'context_unlockTab';
  unlockItem.setAttribute('label', 'Tab entsperren');
  unlockItem.setAttribute('oncommand', 'TabContextMenu.contextTab.locked = false');
  tabContextMenu.insertBefore(unlockItem, refItem);

  tabContextMenu.addEventListener('popupshowing', function(event) {
    if (event.target == this) {
      let locked = TabContextMenu.contextTab.locked;
      lockItem.hidden = locked;
      unlockItem.hidden = !locked;
    };
  });

  eval('gBrowser.unpinTab = ' +
    gBrowser.unpinTab.toString().replace(/}$/, 'aTab.locked = false; }')
  );

  eval('gBrowser.removeTab = ' +
    gBrowser.removeTab.toString().replace('(aTab, aParams) {', '$& if (aTab.locked) return;')
  );

})();

Benutzeravatar
Pentomino
Mitglied
Beiträge: 338
Registriert: So, 04. Nov 2007 13:06

Re: Tab sperren

#17

Beitrag von Pentomino » Sa, 27. Jan 2018 5:25

@aborix:
Vielen Dank für die ausführlichen Informationen.

Benutzeravatar
aborix
Senior-Mitglied
Beiträge: 3917
Registriert: So, 06. Sep 2009 0:57

Re: Tab sperren

#18

Beitrag von aborix » Mo, 05. Feb 2018 0:01

Ein Mitglied hat mich per PN gefragt, ob sich auch das Laden einer neuen Seite verhindern lässt. Da dieses Mitglied den Empfang von PNs deaktiviert hat, antworte ich hier. Ich kenne derzeit keinen Weg, diese Funktion in das Skript aufzunehmen. Falls ich einen finde, melde ich mich hier.
Zuletzt geändert von aborix am Mo, 05. Feb 2018 0:13, insgesamt 1-mal geändert.

Falck
Mitglied
Beiträge: 78
Registriert: Mi, 10. Nov 2010 21:34

Re: Tab sperren

#19

Beitrag von Falck » Mo, 05. Feb 2018 0:10

Hallo aborix,

ich verwende dein 1. gepostetes Skript.
Eine Markierung eines gesperrten Tabs lässt sicht nicht einbauen?
Wäre ne super Sache wenn dass gehen würde!

Falck

Hastenichgesehen
Junior-Mitglied
Beiträge: 31
Registriert: Mo, 15. Feb 2010 11:06

Re: Tab sperren

#20

Beitrag von Hastenichgesehen » Mo, 05. Feb 2018 9:44

Hallo aborix,

es gibt doch eine Scriptfunktion wo man den zuvor geschlossenen Tab wiederherstellen kann.
Kann man diese Funktion (oder Teile davon) nicht dafür nutzen um den gesperrten Tab zu refreshen, wenn eine neue URL eingegeben wird?

Horst
Gruß
Horst

Benutzeravatar
aborix
Senior-Mitglied
Beiträge: 3917
Registriert: So, 06. Sep 2009 0:57

Re: Tab sperren

#21

Beitrag von aborix » Do, 08. Feb 2018 21:37

Ich weiß es nicht; ich sehe jedenfalls nicht, wie.

Benutzeravatar
aborix
Senior-Mitglied
Beiträge: 3917
Registriert: So, 06. Sep 2009 0:57

Re: Tab sperren

#22

Beitrag von aborix » Fr, 09. Feb 2018 23:42

Falck hat geschrieben:
Mo, 05. Feb 2018 0:10
ich verwende dein 1. gepostetes Skript.
Eine Markierung eines gesperrten Tabs lässt sicht nicht einbauen?
Ist jetzt eingebaut, funktioniert aber noch nicht ganz. Beim Anheften, Ablösen und Verschieben bleibt zwar die Sperre bestehen, die Markierung aber nicht. Die Markierung ist ein rotes Quadrat, man kann natürlich auch eine andere Grafik nehmen.

Code: Alles auswählen

(function() {

  if (location != 'chrome://browser/content/browser.xul')
    return;

  let tabContextMenu = document.getElementById('tabContextMenu');

  let lockItem = document.createElement('menuitem');
  lockItem.id = 'context_lockTab';
  lockItem.setAttribute('label', 'Tab sperren');
  lockItem.setAttribute('oncommand', ' \
    let tab = TabContextMenu.contextTab; \
    tab.locked = true; \
    let image = document.createElement("image"); \
    image.setAttribute("anonid", "locked-icon"); \
    image.setAttribute("src", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKBAMAAAB/HNKOAAAABGdBTUEAALGPC/xhBQAAADBQTFRFAAAAgAAAAIAAgIAAAACAgACAAICAgICAwMDA/wAAAP8A//8AAAD//wD/AP//////ex+xxAAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAA5JREFUGNNjmAkCDGSRAIDlHeNaYTFnAAAAAElFTkSuQmCC"); \
    let closeButton = document.getAnonymousElementByAttribute(tab, "anonid", "close-button"); \
    closeButton.parentNode.appendChild(image); \
  ');

  let refItem = document.getElementById('context_pinTab');
  tabContextMenu.insertBefore(lockItem, refItem);

  let unlockItem = document.createElement('menuitem');
  unlockItem.id = 'context_unlockTab';
  unlockItem.setAttribute('label', 'Tab entsperren');
  unlockItem.setAttribute('oncommand', ' \
    let tab = TabContextMenu.contextTab; \
    tab.locked = false; \
    let image = document.getAnonymousElementByAttribute(tab, "anonid", "locked-icon"); \
    if (image) \
      image.parentNode.removeChild(image); \
  ');

  tabContextMenu.insertBefore(unlockItem, refItem);

  tabContextMenu.addEventListener('popupshowing', function(event) {
    if (event.target == this) {
      let locked = TabContextMenu.contextTab.locked;
      lockItem.hidden = locked;
      unlockItem.hidden = !locked;
    };
  });

  eval('gBrowser.removeTab = ' +
    gBrowser.removeTab.toString().replace('(aTab, aParams) {', '$& if (aTab.locked) return;')
  );

})();

Falck
Mitglied
Beiträge: 78
Registriert: Mi, 10. Nov 2010 21:34

Re: Tab sperren

#23

Beitrag von Falck » Sa, 10. Feb 2018 17:59

Herzlichen Dank!! :klasse: :-D

Hastenichgesehen
Junior-Mitglied
Beiträge: 31
Registriert: Mo, 15. Feb 2010 11:06

Re: Tab sperren

#24

Beitrag von Hastenichgesehen » Sa, 10. Feb 2018 18:27

Hallo,

ich muss mal eine Frage loswerden.
Ist es nicht vermeidbar das ein gesperrtes Tab nach dem FF-Neustart (mit / ohne Cache-Bereinigung) 1) die rote Markierung verliert und 2) im Menü wieder "Tab sperren" steht?

Gruß
Horst
Gruß
Horst

Benutzeravatar
aborix
Senior-Mitglied
Beiträge: 3917
Registriert: So, 06. Sep 2009 0:57

Re: Tab sperren

#25

Beitrag von aborix » Di, 13. Feb 2018 18:01

Das ist leider nicht vermeidbar.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste