Wenn schon keine Besserung möglich ist, dann wünsche ich Dir auf jeden Fall einen erträglichen Status, GermanFreme82!
Vielen herzlichen Dank für dein Mitgefühl. :oops:
Wenn schon keine Besserung möglich ist, dann wünsche ich Dir auf jeden Fall einen erträglichen Status, GermanFreme82!
Vielen herzlichen Dank für dein Mitgefühl. :oops:
Was mich betrifft...nicht vielleicht, sondern ich akzeptiere sie. :wink:
:klasse::oops:
Kann doch mal passieren :wink:
Dankeschön ! :oops:
Das hat Stil :klasse:
Ganz ganz großes DANKE an dich !
Es ist schön zu wissen, das du meine Entschuldigung ehrlich aufgefaßt und vielleicht sogar akzeptiert hast.
PS: Eine Besserung wird es leider nie geben, ist bleibend und situationsabhängig ... leider. Ist kein Witz ist wirklich heftig an manchen Tagen.
Steht doch auf der Seite die du selber aufrufen kannst:Neue Funktionen und Änderungen.
Screenshot (330).png
Achso ok vielen lieben DANK !
Die hab ich ganz vergessen anzuklicken ... man bin ich ein Dummerle ;-).
Bei mir war am Wochenende auch Land unter.
Erst ging mein Server in Arsch, dann wollte mein FritzBox mich nicht mehr reinlassen und dann ging Firefox nicht mehr.
Das war nicht leicht zu verkraften, besonders nicht für mich, weil ich gesundheitlich eh auf dem letzten Loch pfiff die Tage udn dann noch sowas.
Klar ist das Forum hier kein Platz um sich Luft zu machen, aber in der Not wußte ich mir nicht zu helfen und hab mal laut gemeckert gegen Firefox, was nicht so gut ankam bei der Community.
Allerdings hab ich mich auch dafür entschuldigt und ich hoffe, das haben auch alle mitbekommen, die ich verschreckt habe.
Ich habe eben gesehen das FF 66.0.4 raus ist.
Kann mir bitte jemand kurz sagen, ob im neuen FF das Problem offiziell behoben wurde ?
Bei mir scheint es nur zufällig gelöst zu sein durch 1 oder 2 Einstellungen (siehe Beitrag weiter oben).
Nachdem ich mich gestern so unmöglich aufgeführt habe möchte ich nun versuchen mal etwas kosntruktives beizutragen.
Ich habe eben 2 Dinge getan und die haben zumindest jetzt "noch" zur folge, das mein Firefox alle seine Erweiterungen zuläßt.
1.) In den Einstellungen 3 Häkchen gesetzt (siehe Foto)
.
[attachment=0]2019.05.05 Bild 02.png[/attachment]
.
2. ) about:config => Adressleiste eingeben | "xpinstall.signatures.required" eintippen und den Wert auf "false" setzen (Doppelklick links)
Ich bin kein Profi und ich habe keine Ahnung davon was ich damit getan habe, aber bei mir läuft Firefox 66.0.3 nun wieder "normal".
Ich möchte an dieser Stelle nochmal ganz ganz aufrichtig dafür entschuldigen, wie ich mich gestern verhalten habe euch gegenüber und ich bitte euch darum mir zu verzeihen.
Kein LAden und auch nicht gewerblich is auch zu spät um zu erklären kann kaum Augen aufhaltne noch.
Nen sorry das tut mir leid, das ich so aufgebracht war, aber wenn man vor dem NICHTS steht mit einmal und das dann so sein soll alles, dann ist man genervt. Klar hab ich Verständnis für euch und das mein Ton nicht der Beste war, aber auch ich möchte auch mal ins Bett gehen 00 Uhr, oder wie spät das grad ist. Da rauf ich mir die Haare um diese Zeit nur wiel in China ein Sack umfällt und dann Firefox Amok läuft ich kann shcon kaum die Augen noch offen halten und weiß nicht mehr ganz was ich schriebe nur das der Fehler hier affig ist oder war.
Ich sags nochmal es tut mir leid das ich so forsch un bösartig war und ich suche keine Entschuldigung dafür es tut mir LEID !
Ich entschuldige mich bei euch allen und bitte euch inständig um etwas Nachsicht und Vergebung.
ich geh jetzt pennen udn hoffenltlich Morgen abend siehts dann vielliceicht besser aus.
Was soll der Mist ich muß mit dem hier ARBEITEN !
Wann wird der Fehler dnen behoben ab Monatg muß der LAden hier wieder laufen.
Mir Platz langsam der KRagen mit diesen nutzlosen Mist hier wird man quasi enteignet ich will meine Addons haben basta und da macht mir kein Firefox Vorschriften soweit kommts noch.
Bin stinksauer !!!
So ich bin jetz erstmal durch mit den ganzen Änderungen (kam eben erst dazu).
Bis jetzt läuft alles einwandfrei udn ohne Fehler.
So als kleiner Zusatz wäre es noch mega, wenn ich mal testweise die TAB-Lietse nach unten bringen könnte, ABER überhalb der Statusleiste, falls das geht.
Ich DANKE dir nochmals bist echt megahilfreich gewesen bei allem !!!!!!
Also sind deine Probleme alle gelöst!?
Bis auf eine winzige Kleinigkeit schon, ABER ich danke dir nochmals 1.000x für deine großartige ruhige und sachliche Hilfe ! :klasse:
Schau mal bitte auf das Bild und sag mir bitte einmal, was das dort ist und ob man das wegmachen kann, denn die Buttons machen genau das gleich, wie die ganz oben rechts am Rand und sind somit vollkommen sinnlos an der Stelle:
[attachment=0]2019.03.21 Bild 08.png[/attachment]
Jetzt fehlt nur noch die Funktion "TABs schützen" für das Kontextmenü.
Die Datei liegt im Pfad "C:\Users\VMWare-PC\AppData\Roaming\Mozilla\Firefox\Profiles\ltuhfjqd.default\chrome", aber funktioniert leider nicht, soll bedeuten, sie wird NICHT angezeigt.
TabProtectmod.uc.js
// ==UserScript==
// @name tabProtect_mod2.uc.js
// @namespace http://space.geocities.yahoo.co.jp/gl/alice0775
// @description Tab schützen
// @include main
// @author Alice0775
// @Note Tabulator wird nicht unterstützt
// @Note Beim Wechsel in den Privaten Modus über Tableiste, kann es beim
// @Note Speichern und Wiederherstellen der Browsersitzung Probleme geben
// @compatibility 60
// @version 2018/06/21 19:50 workaround regression
// @version 2018/06/21 19:40 fix restore session if *.restore_on_demand is enabled
// @version 2018/06/10 00:00 workaround restore session
// @version 2018/05/23 00:00 Fixed typo(status is undeled when unprotect)
// @version 2018/05/12 15:30 workaround restore session for all window
// @version 2018/05/06 14:00 workaround for tab move
// @version 2018/05/04 12:00 cleanup for 60
// @version 2018/05/04 23:00 for 60
// ==/UserScript==
var tabProtect = {
debug: function(aMsg){
Cc["@mozilla.org/consoleservice;1"]
.getService(Ci.nsIConsoleService)
.logStringMessage(aMsg.toString());
},
sessionStore: {
get ss() {
try {
return Components.classes["@mozilla.org/browser/sessionstore;1"].
getService(Components.interfaces.nsISessionStore)
} catch(e) {
return;
}
},
getTabValue : function(aTab, aKey) {
if (typeof SessionStore.getCustomTabValue == "function")
return SessionStore.getCustomTabValue(aTab, aKey);
else
return this.ss.getTabValue(aTab, aKey);
},
setTabValue : function(aTab, aKey, aValue) {
if (typeof SessionStore.setCustomTabValue == "function")
return SessionStore.setCustomTabValue(aTab, aKey, aValue);
else
return this.ss.setTabValue(aTab, aKey, aValue);
},
deleteTabValue : function(aTab, aKey) {
if (typeof SessionStore.deleteCustomTabValue == "function")
return SessionStore.deleteCustomTabValue(aTab, aKey);
else
return this.ss.deleteTabValue(aTab, aKey);
}
},
init: function(){
this.tabContextMenu();
//tabbrowser.xml ersetzen
gBrowser.removeTab_org = gBrowser.removeTab;
gBrowser.removeTab = function(aTab, aParams) {
if (aTab.localName != "tab")
aTab = this.selectedTab;
if (aTab.hasAttribute("tabProtect"))
return;
gBrowser.removeTab_org(aTab, aParams);
}
// CSS Übernehmen
var stack = document.getAnonymousElementByAttribute(
gBrowser.tabContainer.firstChild, "class", "tab-stack");
var style = `
.tab-close-button[hidden='true'] image {
width: 0px;
}
.tab-icon-protect{
margin-top: 10px; /*Notwendige Anpassung*/
margin-left: -6px; /*Notwendige Anpassung*/
list-style-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQUlEQVQ4jWNgGAXDADASUvDvOsN/fPJMlLqAhRhFTJqo/H/XKXQBsoFEuQDDVnIMQPcGXJxYA3C5hiwvUOwCZAAAlRcK7m+YgB4AAAAASUVORK5CYII=');
}
.tab-icon-protect[hidden='true'] {
display: none;
}
`;
var sspi = document.createProcessingInstruction(
'xml-stylesheet',
'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'
);
document.insertBefore(sspi, document.documentElement);
sspi.getAttribute = function(name) {
return document.documentElement.getAttribute(name);
};
this.restoreAll(0);
gBrowser.tabContainer.addEventListener('TabMove', tabProtect.TabMove, false);
gBrowser.tabContainer.addEventListener('SSTabRestoring', tabProtect.restore,false);
window.addEventListener('unload',function(){ tabProtect.uninit();},false)
},
restoreAll: function(delay = 0) {
var that = this;
setTimeout(init, delay, 0);
function init(i){
if(i < gBrowser.tabs.length){
var aTab = gBrowser.tabs[i];
that.restoreForTab(aTab);
i++;
arguments.callee(i);
}else{
}
}
},
uninit: function(){
window.removeEventListener('unload',function(){ tabProtect.uninit();},false)
gBrowser.tabContainer.removeEventListener('SSTabRestoring', tabProtect.restore,false);
gBrowser.tabContainer.removeEventListener('TabMove', tabProtect.TabMove, false);
},
TabMove: function(aEvent){
var aTab = aEvent.target;
gBrowser.protectTabIcon(aTab);
},
tabContextMenu: function(){
//tab context menu
var tabContext = gBrowser.tabContainer.contextMenu;
var menuitem = this.tabProtectMenu
= tabContext.appendChild(
document.createElement("menuitem"));
menuitem.id = "tabProtect";
menuitem.setAttribute("type", "checkbox");
menuitem.setAttribute("label", "Tab schützen");
menuitem.setAttribute("accesskey", "z");
menuitem.setAttribute("oncommand","tabProtect.toggle(event);");
tabContext.addEventListener('popupshowing',function(event){tabProtect.setCheckbox(event);},false);
},
restore: function(event){
tabProtect.restoreAll(0);
},
restoreForTab: function(aTab){
var retrievedData = this.sessionStore.getTabValue(aTab, "tabProtect") == "true";
if(retrievedData){
aTab.setAttribute('tabProtect',true);
var closeButton = document.getAnonymousElementByAttribute(
aTab, "anonid", "close-button");
closeButton.setAttribute('hidden',true);
}
gBrowser.protectTabIcon(aTab);
},
toggle: function(event){
var aTab = TabContextMenu.contextTab;
if( !aTab || aTab.localName !='tab') return;
gBrowser.protectTab(aTab);
},
toggleProtectSelectedTabs: function(){
var tabs = MultipleTabService.getSelectedTabs();
gBrowser.protectTab(tabs[0]);
for (var i= 1; i < tabs.length; i++){
gBrowser.protectTab(tabs[i]);
}
},
setCheckbox: function(event){
var menuitem = this.tabProtectMenu;
var aTab = TabContextMenu.contextTab;
if( !aTab || aTab.localName !='tab'){
menuitem.setAttribute('hidden',true);
return;
}
menuitem.setAttribute('hidden',false);
if(aTab.hasAttribute('tabProtect') && aTab.getAttribute('tabProtect')){
menuitem.setAttribute('checked', true);
}else{
menuitem.setAttribute('checked', false);
}
}
}
if(!('TM_init' in window)) {
gBrowser.isProtectTab = function (aTab){
return aTab.hasAttribute("tabProtect");
}
gBrowser.protectTab = function (aTab){
if ( aTab.hasAttribute("tabProtect") ){
aTab.removeAttribute("tabProtect");
try {
tabProtect.sessionStore.deleteTabValue(aTab, "tabProtect");
} catch(e) {}
var isProtected = false;
} else {
aTab.setAttribute("tabProtect", "true");
tabProtect.sessionStore.setTabValue(aTab, "tabProtect", "true");
var isProtected = true;
}
this.protectTabIcon(aTab);
return isProtected;
}
gBrowser.protectTabIcon = function (aTab){
const kXULNS =
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var closeButton = document.getAnonymousElementByAttribute(
aTab, "anonid", "close-button");
var image = document.getAnonymousElementByAttribute(
aTab, "class", "tab-icon-protect");
if ( aTab.hasAttribute("tabProtect") ){
closeButton.setAttribute('hidden',true);
if(!image){
var stack = document.getAnonymousElementByAttribute(
aTab, "class", "tab-stack");
var image = document.createElementNS(kXULNS,'image');
image.setAttribute('class','tab-icon-protect');
image.setAttribute('left',0);
image.setAttribute('top',0);
if(stack) stack.appendChild(image);
}
aTab.setAttribute('class',aTab.getAttribute('class')+' tabProtect');
image.removeAttribute('hidden');
}else{
closeButton.setAttribute('hidden',false);
if(image){
image.setAttribute('hidden', true);
}
aTab.setAttribute('class',aTab.getAttribute('class').replace(/\stabProtect/g,''));
}
}
}
if(!('TM_init' in window)) tabProtect.init();
Alles anzeigen
Update:
Ich bin jetzt auf diese Website gegangen, weil ich in dem Text oben was kopiert hatte:
Link => https://github.com/alice0775/user…tect_mod2.uc.js
dort habe ich mir den Quellcode erneut kopiert und als "TabProtectmod.uc.js" gespeichert und es GEHT:
// ==UserScript==
// @name tabProtect_mod2.uc.js
// @namespace http://space.geocities.yahoo.co.jp/gl/alice0775
// @description tabProtect
// @include main
// @exclude about:*
// @author Alice0775
// @Note タブのデタッチ非対応
// @Note タスクバーからprivate browsingモードに入るとtabの状態と復帰後のtabのセッション保存おかしくなる
// @compatibility 60
// @version 2018/09/27 10:30 fix tab detach
// @version 2018/09/26 07:30 support tab detach
// @version 2018/09/25 21:30 working with tab multi selection
// @version 2018/06/21 19:50 workaround regression
// @version 2018/06/21 19:40 fix restore session if *.restore_on_demand is enabled
// @version 2018/06/10 00:00 workaround restore session
// @version 2018/05/23 00:00 Fixed typo(status is undeled when unprotect)
// @version 2018/05/12 15:30 workaround restore session for all window
// @version 2018/05/06 14:00 workaround for tab move
// @version 2018/05/04 12:00 cleanup for 60
// @version 2018/05/04 23:00 for 60
// ==/UserScript==
var tabProtect = {
debug: function(aMsg){
Cc["@mozilla.org/consoleservice;1"]
.getService(Ci.nsIConsoleService)
.logStringMessage(aMsg.toString());
},
sessionStore: {
get ss() {
try {
return Components.classes["@mozilla.org/browser/sessionstore;1"].
getService(Components.interfaces.nsISessionStore)
} catch(e) {
return;
}
},
getTabValue : function(aTab, aKey) {
if (typeof SessionStore.getCustomTabValue == "function")
return SessionStore.getCustomTabValue(aTab, aKey);
else
return this.ss.getTabValue(aTab, aKey);
},
setTabValue : function(aTab, aKey, aValue) {
if (typeof SessionStore.setCustomTabValue == "function")
return SessionStore.setCustomTabValue(aTab, aKey, aValue);
else
return this.ss.setTabValue(aTab, aKey, aValue);
},
deleteTabValue : function(aTab, aKey) {
if (typeof SessionStore.deleteCustomTabValue == "function")
return SessionStore.deleteCustomTabValue(aTab, aKey);
else
return this.ss.deleteTabValue(aTab, aKey);
}
},
init: function(){
this.tabContextMenu();
//tabbrowser.xmlを置き換え
gBrowser.removeTab_org = gBrowser.removeTab;
gBrowser.removeTab = function(aTab, aParams) {
if (aTab.localName != "tab")
aTab = this.selectedTab;
if (aTab.hasAttribute("tabProtect"))
return;
gBrowser.removeTab_org(aTab, aParams);
}
// CSSを適用
var stack = document.getAnonymousElementByAttribute(
gBrowser.tabContainer.firstChild, "class", "tab-stack");
var style = `
.tab-close-button[hidden='true'] image {
width: 0px;
}
.tab-icon-protect{
margin-top: 0px; /*要調整*/
margin-left: 0px; /*要調整*/
list-style-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQUlEQVQ4jWNgGAXDADASUvDvOsN/fPJMlLqAhRhFTJqo/H/XKXQBsoFEuQDDVnIMQPcGXJxYA3C5hiwvUOwCZAAAlRcK7m+YgB4AAAAASUVORK5CYII=');
}
.tab-icon-protect[hidden='true'] {
display: none;
}
`;
var sspi = document.createProcessingInstruction(
'xml-stylesheet',
'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'
);
document.insertBefore(sspi, document.documentElement);
sspi.getAttribute = function(name) {
return document.documentElement.getAttribute(name);
};
this.restoreAll(0);
gBrowser.tabContainer.addEventListener('TabMove', this, false);
gBrowser.tabContainer.addEventListener('SSTabRestoring', this, false);
window.addEventListener('unload', this, false)
// detach tab
let func = gBrowser.swapBrowsersAndCloseOther.toString();
if (gBrowser && !/copytabProtect/.test(func)) {
func = func.replace(
'let otherFindBar = aOtherTab._findBar;',
`if (aOtherTab.hasAttribute("tabProtect")) {
aOurTab.ownerGlobal.gBrowser.protectTab(aOurTab, true);
/*copytabProtect*/
}
$&`
);
eval("gBrowser.swapBrowsersAndCloseOther = function " + func.replace(/^function/, ''));
}
},
restoreAll: function(delay = 0) {
var that = this;
setTimeout(init, delay, 0);
function init(i){
if(i < gBrowser.tabs.length){
var aTab = gBrowser.tabs[i];
that.restoreForTab(aTab);
i++;
arguments.callee(i);
}else{
}
}
},
uninit: function(){
window.removeEventListener('unload', this, false)
gBrowser.tabContainer.removeEventListener('SSTabRestoring', this, false);
gBrowser.tabContainer.removeEventListener('TabMove', this, false);
gBrowser.tabContainer.contextMenu.removeEventListener('popupshowing', this, false);
},
handleEvent: function(event) {
switch(event.type) {
case "unload":
this.uninit(event);
break;
case "SSTabRestoring":
this.restore(event);
break;
case "TabMove":
this.TabMove(event);
break;
case "popupshowing":
this.popupshowing(event);
break;
}
},
TabMove: function(aEvent){
var aTab = aEvent.target;
gBrowser.protectTabIcon(aTab);
},
tabContextMenu: function(){
//tab context menu
var tabContext = gBrowser.tabContainer.contextMenu;
var menuitem = this.tabProtectMenu
= tabContext.appendChild(
document.createElement("menuitem"));
menuitem.id = "tabProtect";
menuitem.setAttribute("type", "checkbox");
if (Services.appinfo.version.split(".")[0] >= 63)
menuitem.setAttribute("label", "Protect This Tab(s)");
else
menuitem.setAttribute("label", "Protect This Tab");
menuitem.setAttribute("accesskey", "P");
menuitem.setAttribute("oncommand","tabProtect.toggle(TabContextMenu.contextTab);");
tabContext.addEventListener('popupshowing', this, false);
},
popupshowing: function(event) {
this.setCheckbox(event);
},
restore: function(event){
tabProtect.restoreAll(0);
},
restoreForTab: function(aTab){
var retrievedData = this.sessionStore.getTabValue(aTab, "tabProtect") == "true";
if(retrievedData){
aTab.setAttribute('tabProtect',true);
var closeButton = document.getAnonymousElementByAttribute(
aTab, "anonid", "close-button");
closeButton.setAttribute('hidden',true);
}
gBrowser.protectTabIcon(aTab);
},
toggle: function(aTab){
if (typeof gBrowser.selectedTabs != "undefined") {
this.toggleProtectSelectedTabs(this.getSelectedTabs(aTab));
} else {
gBrowser.protectTab(aTab);
}
},
toggleProtectSelectedTabs: function(tabs){
if (tabs.length < 1)
return;
let isProtect = gBrowser.isProtectTab(tabs[0]);
for (let tab of tabs) {
gBrowser.protectTab(tab, !isProtect);
}
},
getSelectedTabs: function(aTab){
let contextTab = aTab;
let selectedTabs = [contextTab];
if (gBrowser.selectedTabs.indexOf(contextTab) < 0)
return selectedTabs;
for (let tab of gBrowser.selectedTabs) {
if (contextTab != tab)
selectedTabs.push(tab);
}
return selectedTabs;
},
setCheckbox: function(event){
var menuitem = this.tabProtectMenu;
var aTab = TabContextMenu.contextTab;
if( !aTab || aTab.localName !='tab'){
menuitem.setAttribute('hidden',true);
return;
}
menuitem.setAttribute('hidden',false);
if(aTab.hasAttribute('tabProtect') && aTab.getAttribute('tabProtect')){
menuitem.setAttribute('checked', true);
}else{
menuitem.setAttribute('checked', false);
}
}
}
gBrowser.isProtectTab = function (aTab){
return aTab.hasAttribute("tabProtect");
}
gBrowser.protectTab = function (aTab, state) {
let isProtected;
if (typeof state == "undefined") {
if ( aTab.hasAttribute("tabProtect") ){
state = false;
} else {
state = true;
}
}
if (state) {
aTab.setAttribute("tabProtect", "true");
tabProtect.sessionStore.setTabValue(aTab, "tabProtect", "true");
isProtected = true;
} else {
aTab.removeAttribute("tabProtect");
try {
tabProtect.sessionStore.deleteTabValue(aTab, "tabProtect");
} catch(e) {}
isProtected = false;
}
this.protectTabIcon(aTab);
return isProtected;
}
gBrowser.protectTabIcon = function (aTab){
const kXULNS =
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var closeButton = document.getAnonymousElementByAttribute(
aTab, "anonid", "close-button");
var image = document.getAnonymousElementByAttribute(
aTab, "class", "tab-icon-protect");
if ( aTab.hasAttribute("tabProtect") ){
closeButton.setAttribute('hidden',true);
if(!image){
var stack = document.getAnonymousElementByAttribute(
aTab, "class", "tab-stack");
var image = document.createElementNS(kXULNS,'image');
image.setAttribute('class','tab-icon-protect');
image.setAttribute('left',0);
image.setAttribute('top',0);
if(stack) stack.appendChild(image);
}
aTab.setAttribute('class',aTab.getAttribute('class')+' tabProtect');
image.removeAttribute('hidden');
}else{
closeButton.setAttribute('hidden',false);
if(image){
image.setAttribute('hidden', true);
}
aTab.setAttribute('class',aTab.getAttribute('class').replace(/\stabProtect/g,''));
}
}
tabProtect.init();
Alles anzeigen
Dann durchsuch mal deine Scripte, eins davon ist dafür zuständig.
AAAAAAAAAAAAAALLLLLTER !!!!!!!!!!!!!!! :shock::klasse::mrgreen::lol:
Ich könnte dich kaputtknuddeln !
Vielen Dank genau das hat mein Problem gelöst, denn ich hab "ffc-add-statusbar.uc.js" jetzt mal aus Spaß aus dem Ordner gehauen und siehe da, die Leiste mit allen Symbolen drinne war wieder da !!!!!
(function() {
let tb = document.createElement('toolbar');
tb.id = 'user-statusbar';
tb.setAttribute('customizable', 'true');
tb.setAttribute('mode', 'icons');
tb.setAttribute('context', 'toolbar-context-menu');
let vb = document.createElement('vbox');
vb.id = 'user-statusbar-vbox';
let browserBottombox = document.getElementById('browser-bottombox');
browserBottombox.parentNode.insertBefore(vb, browserBottombox);
vb.appendChild(tb);
CustomizableUI.registerArea('user-statusbar', {legacy: true});
})();
Alles anzeigen
Du hast viele Probleme :wink:Mach doch eins nach dem anderen.
Ich danke dir 1.000x denn bisher war ich noch nie so weit gekommen und ohne deine Hilfe hätte ich das nicht geschafft.
Checkliste:
TAB-Leiste richtige Position :klasse:
weißer Rand um TABs weg :klasse:
Statusleiste unten vorhanden :klasse:
Symbole in Statusleiste da :klasse:
komische zweite Leiste unter Statusleiste gelöscht :klasse:
Ich hab erstmal ein gigantischen Problem mit den Symbolen in der Statusleiste, denn die sind nur teilweise da !
Zum Beispiel fehlt das Symbol zu "Text Notes" => https://addons.mozilla.org/de/firefox/addon/textnotes
Ich hab das Ding installiert ganz sicher und es ist auch aktiviert, aber das Symbol ist nicht da und ich kann das auch nicht hinzufügen, weil es in der Liste bei "anpassen" fehlt und das gleiche gilt für "No Script" und viele mehr ????
[attachment=0]02.jpg[/attachment]
Dein oben gepostetes Script funktioniert einwandfrei.
Beitrag Nr. 2, hast du das überprüft?
Bitte nicht so schnell ich muß noch nachkommen mit probieren .
So ich habs nun mehrfach versucht, ABER es geht definitiv NICHT !
Das Ergebnis ist nicht in Ordnung, denn die Statusleiste ist gesperrt, was verhindert das man dort was einfügen kann.
Die TABs sind über der "Adressleiste" und nicht wie gewünscht unter der "Lezeichen Symbolleiste" und haben einen hässliches weißen Rand, den ich nicht möchte. Außerdem fehlt die Funktion "TABs schützen" im Kontextmenü auf einem TAB.
benötige Hilfe für:
Ich bräuchte somit dringend Hilfe um die TABs an die richtige Stelle zu bekommen,
den abartigen weißen Rand um die TABs zu entfernen,
die Statusleiste wieder benutzbar zu machen und
die TAB schützen Funktion fehlt und muß wider verfügbar sein.
[attachment=2]Zwischenablage01.jpg[/attachment]
[attachment=1]Zwischenablage02.jpg[/attachment]
[attachment=0]Zwischenablage03.jpg[/attachment]
Hallo liebe Community !
Ich brauch bitte dringend einmal eure Hilfe, denn ich bekomme meinen Firefox einfahc nicht wieder so hin, wie er im FF 64 war. Vieles habe ich bereits versucht, doch irgendwie ist da echt der Wurm drinn und ich bin am verzweifeln.
Ich möchte gerne das mein Firefox genau so wieder aussieht wie auf den folgenden Bildern und bitte euch daher um Hilfe:
[attachment=4]2019.03.20 Bild 01.png[/attachment]
[attachment=3]Zwischenablage02.jpg[/attachment]
Bitte gebt mir eine genaue Anleitung dazu, was ich wo reinschreiben muß und wo die Datei dazu liegen muß (Pfad), damit ich nur die benötigten Scripte und Ordner habe im Firefox 66. Damit meine ich sowas wie:
kopiere bitte Datei ... in den Pfad sowieso und schreibe XXX in diese Datei rein
lösche bitte Datei ... aus dem Pfad sowieso
kopiere bitte Inhalt ... aus Datei ... und schreibe diesen Inhalt dann stattdessen in Datei ... rein
Ich bitte euch helft mir BITTE denn ich möchte auch endlich ein funktionierendes Update von FF 66 hier haben und nicht dieses Unding hier.
Aktuell hab ich noch ALLE Scripte und Vorbereitungen vom Firefox 64 drinne inkl. der Ordner und das sieht dann genau so aus bei mir:
[attachment=2]2019.03.20 Bild 07.png[/attachment]
[attachment=1]2019.03.20 Bild 08.png[/attachment]
[attachment=0]2019.03.20 Bild 09.png[/attachment]
Das Ergebnis ist grauenhaft, denn die TAB-Leiste ist immer da mit so abartigen weißen Rändern um die TAbs, die ich nicht brauch und die ganze Statusleiste ist weg.
Der Inhalt der Scripte lauten wie folgt (diese "ffc-" Scripte kopiere ich dann einfach rein daher nicht erwähnt):
userChrome.css
@import url('css/ffc-styles.css');
#context-openlink,
#context-openlinkprivate,
#context-bookmarklink,
#context-sendlinktodevice,
#context-inspect,
#context-openlinkinusercontext-menu,
#context-viewpartialsource-selection,
#context-sep-sendlinktodevice,
#inspect-separator,
#_lympha-menuitem-_lympha-ctx-btn{
display:none!important;
}
#contentAreaContextMenu > menuseparator:nth-child(93){
display:none!important;
}
#jid1-kdtticj6wxvafa_jetpack-menuitem-_sss{
-moz-box-ordinal-group: 100 !important;
}
#context-sendpagetodevice,
#context-viewbgimage,
#context-selectall,
#context-viewsource,
#context-sep-sendpagetodevice,
#context-sep-viewbgimage,
#contentAreaContextMenu > menuseparator:nth-child(93){
display:none!important;
}
#context-sendimage,
#context-setDesktopBackground,
#inspect-separator{
display:none!important;
}
Alles anzeigen
userContent.css
userChrome.js
LoadingBarGrün.uc.js
/* LoadingBar.uc.js */
(function(){
//Location Bar Enhancer5.1;Loading Bar0.3.0
var cssStr = (function(){/*
#urlbar {
background-image: -moz-repeating-linear-gradient(top, rgba(255,255,255,0), rgba(255,255,255,0) 12px, rgba(255,255,255,1) 12px, rgba(255,255,255,1) 12px), -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(74,250,30,.7) 100%);
background-size:0 0;
background-repeat:repeat-x, no-repeat;
transition: background-size 350ms ease 0s !important;
}
#urlbar:not([style="background-size: 0% 100%;"]) {
animation: progress-bar-stripes 2s linear infinite;
}
@-moz-keyframes progress-bar-stripes {
from {
background-position: 0, 0;
}
to {
background-position: 51px 0, 0;
}
}
*/}).toString().replace(/^.+\s|.+$/,"");
var style = document.createProcessingInstruction("xml-stylesheet", "type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
var mainW = document.getElementById("main-window");
document.insertBefore(style, mainW);
function main(window) {
var {document, gBrowser} = window;
function $(id) { return document.getElementById(id) };
var urlbar = $("urlbar");
let pageProgress = 0;
let async = makeWindowHelpers(window).async;
var LoadingBar = {
listener: {
onChangeTab: function(e) {
urlbar.style.backgroundSize = '0% 100%';
pageProgress = 0;
},
onProgressChange: function(aBrowser,webProgress,request,curSelfProgress,maxSelfProgress,curTotalProgress,maxTotalProgress) {
if (gBrowser.contentDocument === aBrowser.contentDocument) {
var val = (curTotalProgress-1)/(maxTotalProgress-1);
pageProgress = val;
urlbar.style.backgroundSize = (100*val) + '% 100%';
if (val > 0.9)
async(function() {
if (pageProgress > 0.95)
urlbar.style.backgroundSize = '100% 100%';
}, 1000);
}
},
onStateChange: function() {
if (pageProgress > 0.95){
async(function() {
urlbar.style.backgroundSize = '0% 100%';
pageProgress = 0;
}, 1000);
}else{
urlbar.style.backgroundSize = '0% 100%';
}
}
}
};
gBrowser.tabContainer.addEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
gBrowser.addTabsProgressListener(LoadingBar.listener);
unload(function() {
gBrowser.tabContainer.removeEventListener('TabSelect',LoadingBar.listener.onChangeTab,false);
gBrowser.removeTabsProgressListener(LoadingBar.listener);
}, window);
}
watchWindows(main, "navigator:browser");
function runOnLoad(window, callback, winType) {
window.addEventListener("load", function() {
window.removeEventListener("load", arguments.callee, false);
if (window.document.documentElement.getAttribute("windowtype") == winType)
callback(window);
}, false);
}
function runOnWindows(callback, winType) {
function watcher(window) {
try {
callback(window);
}
catch(ex) {}
}
let browserWindows = Services.wm.getEnumerator(winType);
while (browserWindows.hasMoreElements()) {
let browserWindow = browserWindows.getNext();
if (browserWindow.document.readyState == "complete")
watcher(browserWindow);
else
runOnLoad(browserWindow, watcher, winType);
}
}
function watchWindows(callback, winType) {
function watcher(window) {
try {
callback(window);
}
catch(ex) {}
}
runOnWindows(callback, winType);
function windowWatcher(subject, topic) {
if (topic == "domwindowopened")
runOnLoad(subject, watcher, winType);
}
Services.ww.registerNotification(windowWatcher);
unload(function() { Services.ww.unregisterNotification(windowWatcher) });
}
function unload(callback, container) {
let unloaders = unload.unloaders;
if (unloaders == null)
unloaders = unload.unloaders = [];
if (callback == null) {
unloaders.slice().forEach(function(unloader) { unloader() });
unloaders.length = 0;
return null;
}
if (container != null) {
container.addEventListener("unload", removeUnloader, false);
let origCallback = callback;
callback = function() {
container.removeEventListener("unload", removeUnloader, false);
origCallback();
}
}
function unloader() {
try {
callback();
}
catch(ex) {}
}
unloaders.push(unloader);
function removeUnloader() {
let index = unloaders.indexOf(unloader);
if (index != -1)
unloaders.splice(index, 1);
}
return removeUnloader;
}
function makeWindowHelpers(window) {
let {clearTimeout, setTimeout} = window;
function async(callback, delay) {
delay = delay || 0;
let timer = setTimeout(function() {
stopTimer();
callback();
}, delay);
function stopTimer() {
if (timer == null)
return;
clearTimeout(timer);
timer = null;
}
}
return {
async: async,
};
}
})();
Alles anzeigen
TabProtect_mod.uc.js
// ==UserScript==
// @name tabProtect_mod2.uc.js
// @namespace http://space.geocities.yahoo.co.jp/gl/alice0775
// @description Tab schützen
// @include main
// @author Alice0775
// @Note Tabulator wird nicht unterstützt
// @Note Beim Wechsel in den Privaten Modus über Tableiste, kann es beim
// @Note Speichern und Wiederherstellen der Browsersitzung Probleme geben
// @compatibility 60
// @version 2018/06/21 19:50 workaround regression
// @version 2018/06/21 19:40 fix restore session if *.restore_on_demand is enabled
// @version 2018/06/10 00:00 workaround restore session
// @version 2018/05/23 00:00 Fixed typo(status is undeled when unprotect)
// @version 2018/05/12 15:30 workaround restore session for all window
// @version 2018/05/06 14:00 workaround for tab move
// @version 2018/05/04 12:00 cleanup for 60
// @version 2018/05/04 23:00 for 60
// ==/UserScript==
var tabProtect = {
debug: function(aMsg){
Cc["@mozilla.org/consoleservice;1"]
.getService(Ci.nsIConsoleService)
.logStringMessage(aMsg.toString());
},
sessionStore: {
get ss() {
try {
return Components.classes["@mozilla.org/browser/sessionstore;1"].
getService(Components.interfaces.nsISessionStore)
} catch(e) {
return;
}
},
getTabValue : function(aTab, aKey) {
if (typeof SessionStore.getCustomTabValue == "function")
return SessionStore.getCustomTabValue(aTab, aKey);
else
return this.ss.getTabValue(aTab, aKey);
},
setTabValue : function(aTab, aKey, aValue) {
if (typeof SessionStore.setCustomTabValue == "function")
return SessionStore.setCustomTabValue(aTab, aKey, aValue);
else
return this.ss.setTabValue(aTab, aKey, aValue);
},
deleteTabValue : function(aTab, aKey) {
if (typeof SessionStore.deleteCustomTabValue == "function")
return SessionStore.deleteCustomTabValue(aTab, aKey);
else
return this.ss.deleteTabValue(aTab, aKey);
}
},
init: function(){
this.tabContextMenu();
//tabbrowser.xml ersetzen
gBrowser.removeTab_org = gBrowser.removeTab;
gBrowser.removeTab = function(aTab, aParams) {
if (aTab.localName != "tab")
aTab = this.selectedTab;
if (aTab.hasAttribute("tabProtect"))
return;
gBrowser.removeTab_org(aTab, aParams);
}
// CSS Übernehmen
var stack = document.getAnonymousElementByAttribute(
gBrowser.tabContainer.firstChild, "class", "tab-stack");
var style = `
.tab-close-button[hidden='true'] image {
width: 0px;
}
.tab-icon-protect{
margin-top: 10px; /*Notwendige Anpassung*/
margin-left: -6px; /*Notwendige Anpassung*/
list-style-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAQUlEQVQ4jWNgGAXDADASUvDvOsN/fPJMlLqAhRhFTJqo/H/XKXQBsoFEuQDDVnIMQPcGXJxYA3C5hiwvUOwCZAAAlRcK7m+YgB4AAAAASUVORK5CYII=');
}
.tab-icon-protect[hidden='true'] {
display: none;
}
`;
var sspi = document.createProcessingInstruction(
'xml-stylesheet',
'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"'
);
document.insertBefore(sspi, document.documentElement);
sspi.getAttribute = function(name) {
return document.documentElement.getAttribute(name);
};
this.restoreAll(0);
gBrowser.tabContainer.addEventListener('TabMove', tabProtect.TabMove, false);
gBrowser.tabContainer.addEventListener('SSTabRestoring', tabProtect.restore,false);
window.addEventListener('unload',function(){ tabProtect.uninit();},false)
},
restoreAll: function(delay = 0) {
var that = this;
setTimeout(init, delay, 0);
function init(i){
if(i < gBrowser.tabs.length){
var aTab = gBrowser.tabs[i];
that.restoreForTab(aTab);
i++;
arguments.callee(i);
}else{
}
}
},
uninit: function(){
window.removeEventListener('unload',function(){ tabProtect.uninit();},false)
gBrowser.tabContainer.removeEventListener('SSTabRestoring', tabProtect.restore,false);
gBrowser.tabContainer.removeEventListener('TabMove', tabProtect.TabMove, false);
},
TabMove: function(aEvent){
var aTab = aEvent.target;
gBrowser.protectTabIcon(aTab);
},
tabContextMenu: function(){
//tab context menu
var tabContext = gBrowser.tabContainer.contextMenu;
var menuitem = this.tabProtectMenu
= tabContext.appendChild(
document.createElement("menuitem"));
menuitem.id = "tabProtect";
menuitem.setAttribute("type", "checkbox");
menuitem.setAttribute("label", "Tab schützen");
menuitem.setAttribute("accesskey", "z");
menuitem.setAttribute("oncommand","tabProtect.toggle(event);");
tabContext.addEventListener('popupshowing',function(event){tabProtect.setCheckbox(event);},false);
},
restore: function(event){
tabProtect.restoreAll(0);
},
restoreForTab: function(aTab){
var retrievedData = this.sessionStore.getTabValue(aTab, "tabProtect") == "true";
if(retrievedData){
aTab.setAttribute('tabProtect',true);
var closeButton = document.getAnonymousElementByAttribute(
aTab, "anonid", "close-button");
closeButton.setAttribute('hidden',true);
}
gBrowser.protectTabIcon(aTab);
},
toggle: function(event){
var aTab = TabContextMenu.contextTab;
if( !aTab || aTab.localName !='tab') return;
gBrowser.protectTab(aTab);
},
toggleProtectSelectedTabs: function(){
var tabs = MultipleTabService.getSelectedTabs();
gBrowser.protectTab(tabs[0]);
for (var i= 1; i < tabs.length; i++){
gBrowser.protectTab(tabs[i]);
}
},
setCheckbox: function(event){
var menuitem = this.tabProtectMenu;
var aTab = TabContextMenu.contextTab;
if( !aTab || aTab.localName !='tab'){
menuitem.setAttribute('hidden',true);
return;
}
menuitem.setAttribute('hidden',false);
if(aTab.hasAttribute('tabProtect') && aTab.getAttribute('tabProtect')){
menuitem.setAttribute('checked', true);
}else{
menuitem.setAttribute('checked', false);
}
}
}
if(!('TM_init' in window)) {
gBrowser.isProtectTab = function (aTab){
return aTab.hasAttribute("tabProtect");
}
gBrowser.protectTab = function (aTab){
if ( aTab.hasAttribute("tabProtect") ){
aTab.removeAttribute("tabProtect");
try {
tabProtect.sessionStore.deleteTabValue(aTab, "tabProtect");
} catch(e) {}
var isProtected = false;
} else {
aTab.setAttribute("tabProtect", "true");
tabProtect.sessionStore.setTabValue(aTab, "tabProtect", "true");
var isProtected = true;
}
this.protectTabIcon(aTab);
return isProtected;
}
gBrowser.protectTabIcon = function (aTab){
const kXULNS =
"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
var closeButton = document.getAnonymousElementByAttribute(
aTab, "anonid", "close-button");
var image = document.getAnonymousElementByAttribute(
aTab, "class", "tab-icon-protect");
if ( aTab.hasAttribute("tabProtect") ){
closeButton.setAttribute('hidden',true);
if(!image){
var stack = document.getAnonymousElementByAttribute(
aTab, "class", "tab-stack");
var image = document.createElementNS(kXULNS,'image');
image.setAttribute('class','tab-icon-protect');
image.setAttribute('left',0);
image.setAttribute('top',0);
if(stack) stack.appendChild(image);
}
aTab.setAttribute('class',aTab.getAttribute('class')+' tabProtect');
image.removeAttribute('hidden');
}else{
closeButton.setAttribute('hidden',false);
if(image){
image.setAttribute('hidden', true);
}
aTab.setAttribute('class',aTab.getAttribute('class').replace(/\stabProtect/g,''));
}
}
}
if(!('TM_init' in window)) tabProtect.init();
Alles anzeigen
HideTabbarWithOneTab.uc.js
// HideTabbarWithOneTab.uc.js
// v. 0.2
(function() {
if (!window.gBrowser)
return;
let tabbar = document.getElementById("TabsToolbar");
function showHideTabbar() {
tabbar.collapsed = (gBrowser.visibleTabs.length == 1);
};
setTimeout(function() {
showHideTabbar();
}, 0);
let observer = new MutationObserver(showHideTabbar);
observer.observe(document.getElementById("tabbrowser-tabs"), {childList: true});
})();
Alles anzeigen
Kann bitte jemand einmal einen vollständigen und aktuellen Code reinposten, wie ich die Statusleiste wieder unten hinbekomme UND dazu schreiben, wo der genau reingeschrieben werden muß ?