zu 1.:
Ja. Schreibe die Codes nacheinander und lass das javascript: am Beginn des zweiten weg.
zu 2.:
CSS-Code geht für Farben, für Bilder weiß ich es nicht. GM-Skript geht für beides.
zu 1.:
Ja. Schreibe die Codes nacheinander und lass das javascript: am Beginn des zweiten weg.
zu 2.:
CSS-Code geht für Farben, für Bilder weiß ich es nicht. GM-Skript geht für beides.
Neue Version.
Ich bekomme damit immer saubere Links.
Ich habe es mit Google search link fix getestet und kann es teilweise reproduzieren. Bei der Suche aus der Suchleiste bekomme ich immer saubere Links und bei der Suche aus dem Kontextmenü manchmal und manchmal nicht. Ich werde mir das genauer ansehen.
Falls du Greasemonkey o.ä. verwendest, habe ich vielleicht einen Workaround:
Installiere ein Skript mit dem Inhalt der Datei content.js aus der Link-Fix-Erweiterung und diesen Kopfzeilen:
// ==UserScript==
// @name google search link fix
// @include http://*/*
// @include https://*/*
// @run-at document-start
// ==/UserScript==
Die Link-Fix-Erweiterung deaktiviere.
Ich bekomme damit immer saubere Links.
function onLoad(event) {
var doc = event.originalTarget;
if (doc.URL != 'about:blank' && !doc.defaultView.frameElement) {
setTimeout(function() {
alert('Hello World');
}, 0);
};
};
gBrowser.addEventListener('pageshow', onLoad, true);
Man kann 'load' oder 'pageshow' nehmen. Ich habe 'pageshow' genommen, weil durch den Vor- oder Zurück-Button geladene Seiten von 'load' nicht erfasst werden.
Wird eine Seite in einem neuen Tab geladen, so wird manchmal in diesem Tab vorher die leere Seite about:blank geladen, darum die Abfrage danach.
Die Ereignisse 'load' und 'pageshow' werden auch ausgelöst nach dem Laden eines Frames, darum die zweite Abfrage.
Ohne dem Timeout dreht sich im Tab noch der Ladekreis, bis die Meldung weggeklickt wird.
Alles Gute! ![]()
Ich sehe mir das an, wahrscheinlich ist es umständlicher.
So sieht es mit einem Event Listener für beide Funktionen aus:
(function() {
window.addEventListener('click', function(event) {
if (event.button != 2)
return;
if (event.shiftKey) {
if (location == 'chrome://browser/content/browser.xul' &&
event.target.ownerGlobal.top == content)
{
var contextMenu = document.getElementById('contentAreaContextMenu');
// contextMenu.style.visibility = 'collapse';
setTimeout(function() {
gContextMenu.inspectNode();
contextMenu.hidePopup();
// contextMenu.style.visibility = 'visible';
}, 0);
};
} else if (event.ctrlKey) {
event.preventDefault();
event.stopPropagation();
openDialog('chrome://inspector/content/', '_blank', 'chrome, all, dialog=no', event.originalTarget);
};
});
})();
Alles anzeigen
[...] funktioniert alles prima mit genau der Variante, die Du hier oben gepostet hast.
D.h. die Zeilen sind auskommentiert?
Da dein älteres und auch das neue Skript einen Click-Eventlistener haben, kann man die auch vereinigen?
Ich sehe mir das an, wahrscheinlich ist es umständlicher.
Ich meine jetzt nicht, dass ich den Code als zwei getrennte Funktionen in ein Skript packen kann, das ist mir klar.
Wenn du damit meinst, dass die Codes beider Skripte einfach nacheinander in einer Datei stehen: das geht.
Oder auch, etwas vereinfacht:
(function() {
window.addEventListener('click', function(event) {
if (event.button == 2 && event.ctrlKey) {
event.preventDefault();
event.stopPropagation();
openDialog('chrome://inspector/content/', '_blank', 'chrome, all, dialog=no', event.originalTarget);
};
}, true);
if (location == 'chrome://browser/content/browser.xul') {
document.getElementById('content-deck').addEventListener('click', function(event) {
if (event.button == 2 && event.shiftKey) {
var contextMenu = document.getElementById('contentAreaContextMenu');
// contextMenu.style.visibility = 'collapse';
setTimeout(function() {
gContextMenu.inspectNode();
contextMenu.hidePopup();
// contextMenu.style.visibility = 'visible';
}, 0);
};
});
};
})();
Alles anzeigen
Genau genommen ist es mir aber egal, ob das Script selber wieder funktioniert. Ich würde nur gern die Funktionalität zurück bekommen, bei SHIFT+Rechtsklick auf ein Element dieses im internen Firefox-Inspektor auszuwählen. Somit muss nicht mehr im Kontextmenü nach dem Eintrag „Element untersuchen (Q)“ gefahndet werden.
Teste dafür dieses Skript:
(function() {
if (location != 'chrome://browser/content/browser.xul')
return;
document.getElementById('content-deck').addEventListener('click', function(event) {
if (event.button == 2 && event.shiftKey) {
var contextMenu = document.getElementById('contentAreaContextMenu');
// contextMenu.style.visibility = 'collapse';
setTimeout(function() {
gContextMenu.inspectNode();
contextMenu.hidePopup();
// contextMenu.style.visibility = 'visible';
}, 0);
};
});
})();
Alles anzeigen
Es kann sein, dass das Kontextmenü kurz aufblitzt. Geschieht das? Wenn ja, nimm die beiden auskommentierten Zeilen hinzu.
Hallo.
Laut diesem Artikel: MDN - tab sollten
gBrowser.mCurrentTab.tabIndex
und
gBrowser.mCurrentTab.getAttribute('tabindex')
die Position liefern.
Allerdings ergibt das erste immer 0 und das zweite einen leeren String, da das Attribut nicht existiert.
Glücklicherweise gibt es auch noch
gBrowser.mCurrentTab._tPos
und damit funktioniert es.
Mit der Erweiterung userChromeJS und einem Skript lässt sich das vielleicht machen.
Informationen dazu stehen u.a. hier: https://github.com/ardiman/userCh…aster/README.md
Wenn du daran interessiert bist, versuche ich ein geeignetes Skript zu verfassen.
Ich müsste dann folgendes wissen:
Rufe about:support auf. Was steht im Abschnitt "Allgemeine Informationen" bei "Fenster mit mehreren Prozessen" ?
Website-Einstellungen stehen jedenfalls in der permissions.sqlite und in der content-prefs.sqlite, vielleicht auch noch in anderen Dateien. Da es sich um Formularfelder handelt, kommt evtl. auch die formhistory.sqlite in Frage. Allerdings müsste in diesem Fall eher das Löschen der Suchbegriffe und Formulardaten als das der Website-Einstellungen helfen.
Zum Bearbeiten von Sqlite-Dateien braucht man spezielle Programme wie z.B. den SQLite Manager.
Teste bitte:
@-moz-document url(chrome://browser/content/browser.xul) {
#forward-button[disabled] {
display: none
}
#urlbar-wrapper {
clip-path: none !important;
border-left-width: 0.666667px !important;
border-left-color: rgb(172, 168, 153) !important;
border-left-style: solid !important;
}
}
Alles anzeigen
Alles Gute! ![]()
Alles Gute! ![]()
Der Code wirkt im Chrome-Bereich, das ist die Benutzeroberfläche von Firefox. Man braucht dazu eine Erweiterung oder ein userChromeJS-Skript. Mit einem GM-Skript ist er nicht ausführbar. GM-Skripte wirken nur im Content-Bereich, das ist der Inhalt von Webseiten. Ob das Gewünschte mit einem GM-Skript möglich ist, weiß ich im Moment nicht.
Teste den Code in der Browserkonsole (die wirkt im Chrome-Bereich), ob er das macht, was du möchtest.
Soll, so wie in deinem GM-Skript, die Meldung nur bei bestimmten Urls des Ausgangstabs kommen, teste: