"Neuer Tab"-Text (Untitled) ersetzen [solved]

  • Hey alle zusammen. Meine Frage steht eigentlich schon im Titel: Ich versuche schon seit geraumer Zeit das "(Untitled)" Label bei leeren Tabs durch einen anderen Text zu ersetzen. Mit

    Zitat

    .tabbrowser-tabs tab[label="(Untitled)"] .tab-text { ... }

    kann man das Label sozusagen suchen und dann Änderungen dran vornehmen. Ich hab aber bisher nirgendwo irgendwas dazu gefunden, wie man den Text beispielsweise durch ein anderes Label ersetzen kann. Das "(Untitled)" ausblenden, ist ja via "display: none !important" kein Problem, einen anderen Text an der Stelle anzeigen zu lassen scheinbar aber schon.

    Nach stundenlangem Googlen bin ich irgendwann auf diese Seite gekommen, wo es einige Zeilen für die userChrome.css gab, die angeblich den Text ersetzen sollten. Allerdings hat dieses Skript den Text auch nur entfernt, was ich jedoch nicht will. Hab ewig rumprobiert, mir auch per DOM Inspector zig Codezeilen überlegt, die möglicherweise einfach nur ein Label einfügen würden, aber keine hat was gebracht.

    Also, habt ihr irgendwelche Ideen? Wenn möglich bitte keine Plugins, die das erledigen. Ich würd meine Plugin-Anzahl gerne klein halten und alle Änderungen am Design soweit möglich in der userChrome.css vornehmen.

    Besten Dank schon mal.

    Einmal editiert, zuletzt von iru (8. Oktober 2009 um 14:09)

  • Ja, das dachte ich mir schon fast :/ Aber selbst das funktioniert bei mir irgendwie nicht. Gefällt mir als Lösung eh nicht, da sich die Textfarbe gar nicht ändern kann. Ob es da nicht irgendeinen Weg über die userChrome.js gibt? Damit hab ich zumindest meine ganze obere Menüleiste zu einem Punkt "Menu" zusammenfassen können (natürlich mit einem aus dem Netz kopierten Skript). Ein entsprechendes Javascript zu schreiben wäre von der Syntax her vermutlich nicht mal das Problem. Ich hab aber keinen Schimmer, wie ich an die ganzen Variablennamen kommen soll, die mir den aktuellen Tabnamen etc. ausgeben. Hab mir schon zig Skripte angeguckt und mich immer gefragt, wo die Skriptschreiber die ganzen Klassennamen oder wie das im Javascript-Gargon heißt herbekommen. Falls du da irgendwelche Anhaltspunkte hättest, immer her damit. Ich schrecke vor ein bisschen Programmieren nicht zurück. Finde es halt nur schwer komplett ohne Hilfe Fortschritte zu machen. Im Netz hab ich auch noch nichts gefunden, was zumindest mal die Basics erklärt.
    Mit dem Wissen würde ich vermutlich dann auch mein anderes Problem, was ich gestern hier gepostet habe, in den Griff bekommen.

    Danke auf jeden Fall schon mal für deine Antwort.

    EDIT: Also, ich hab mittlerweile mittels DOM Inspector rausgefunden, dass das Objekt mit Klassenname "tabbrowser-tab" eine Variable mit Namen "label" enthält, die im DOM Inspector auch "(Untitled)" anzeigt (zumindest interpretiere ich das im Moment alles so). Das gleiche gibts auch nochmal für ne "Variable" mit Namen "tab-text". Da steht das (Untitled) allerdings unter "value". Da keine von beiden jedoch ne Id hat, weiß ich gerade nicht, wie ich die Variablen auswählen soll. document.getElementByClassName("tabbrowser-tab") will nicht wirklich.

  • Im Javascript liegen meine Stärken, wenn man das so bezeichnen will, leider auch nicht so. Wir haben hier aber auch auf diesem Gebiet paar sehr fähige Schrauber, die dir da eventuell wat zu sagen könnten, wenn es überhaupt so möglich ist.
    Der Code funktioniert bei dir deswegen nicht, weil die dort sitzende Grafik im base64 Code codiert ist, der wiederum von der chrome.css nicht verarbeitet werden kann. Für solche und andere ähnliche Faxen gibt es eben Stylish
    Eine "echte", also uncodierte Grafik kann deine chrome.css zB. direkt von deiner Platte einbinden und verarbeiten. Ein Beispiel von einem Lesezeichenordner mit eigenem Icon von der Platte in der chrome.css, auch mit der Variablen "label":

    CSS
    .bookmark-item[container="true"][label="Newsticker"] {
      list-style-image:  url("file://E:/Favicons/livemark-item.png") !important;
      -moz-image-region: rect(0px 16px 16px 0px) !important;}


    Meines Wissens nach kannst du auf diese Weise nur was ausblenden. Ein Schriftsatz durch ein anderes zu ersetzen geht so wohl nicht. Mit einer Grafik allerdings schon.
    So kann man natürlich auch die von dir angesprochene Textfarbe ändern, in dem man mit m zweiten Code, sagen wir mal für aktiven, oder inaktiven Tab eine zweite Grafik einbaut.

  • Ah, alles klar. Daher klappt das mit dem Bild nicht. Mir gefällt die Lösung mittels Javascript aber auch eindeutig besser. Ich hab mein anderes Problem, das ich hier vor kurzem gepostet hab (URL verstecken), mit dem geposteten Skript super in den Griff bekommen. Das sollte eigentlich eins zu eins auf mein Tab-Problem andwendbar sein. Allerdings weiß ich nicht, wie ich das/die Objekt(e) ohne Id richtig ansprechen soll. Wie gesagt, es gibt zwei Objekte, die das "(Untitled)" in ner Variablen führen. Ich vermute, dass das Objekt mit Klassenname "tab-text" das richtige ist... möglicherweise kann/muss man auch bei beiden den Wert ändern, also sowohl die label- als auch die value-Variable.

    Weiß das vielleicht jemand? Also wie ich in der userChrome.js die Objekte "tab-text" und "tabbrowser-tab" mit einer Syntax ähnlich zu

    Zitat

    var obj = document.getElementById("tabbrowser-tab")


    ansprechen kann? Würde mir wirklich sehr helfen. Damit wäre das Problem nämlich höchst wahrscheinlich allgemein gelöst. Im DOM Inspector werden zwar entsprechende Methoden angezeigt (getElementsByClassName etc.), aber da da der Plural steht, vermute ich, dass das nicht das richtige ist. Zumindest klappt es mit var obj = document.getElementsByClassName("tab-text") nicht. Ich hab in einem anderen Forum sowas wie var obj = document.getElementsByClassName("tab-text")[0] gesehen, was also scheinbar ein bestimmtes Objet auswählt. Das will ich allerdings auch nicht. Ich möchte ja den aktuell ausgewählten Tab verarbeiten und nicht immer den ersten im Tabbrowser (falls ich diese Syntax richtig deute).

    Edit: Uuuund auch das wurde mittlerweile gelöst. Falls es einen interessiert: