Die Startseite wird ja nur beim Start von Firefox geladen. Da gibt es quasi noch gar keinen Tab. Und so soll es auch bleiben. Oder was meinst Du mit "in einem anderen Tab" genau?
Skriptentwicklung About:NotBlank
-
camel-joe -
15. Oktober 2013 um 15:32 -
Erledigt
-
-
Es kommt ja vor, daß du den ersten Tab mit der Startseite überschreibst:
Zitat von camel-joeAngenommen, ich habe nur noch camp-firefox.de geöffnet. Dann klicke ich auf den Button "Startseite", dadurch wird ja camp-firefox.de mit der Startseite überschrieben.
Was ich meine ist:
Es sind z.B. drei Tabs offen, der zweite ist aktiv und du klickst auf den Home-Button. Dann wird der zweite Tab mit der Startseite überschrieben. Kommt dieser Fall vor?Wenn nein, teste bitte dieses Skript:
Code
Alles anzeigen(function() { var startpage = "file:///C:/.../Startseite.htm"; gBrowser.tabContainer.addEventListener("TabOpen", checkTabs); function checkTabs(event) { if (gBrowser.tabs.length == 2) if (gBrowser.getBrowserAtIndex(0).currentURI.spec == startpage) gBrowser.removeTab(gBrowser.tabs[0]); }; }) ();
Noch eine andere Frage:
Werden neue Tabs immer rechts neben dem aktiven geöffnet? -
Zitat von aborix
Es kommt ja vor, daß du den ersten Tab mit der Startseite überschreibst:
Alles klar. Das "kann" in Deiner Aussage "oder kann sie auch in einem anderen sein" habe ich ganz anders aufgefasst.Zitat von aborixEs sind z.B. drei Tabs offen, der zweite ist aktiv und du klickst auf den Home-Button. Dann wird der zweite Tab mit der Startseite überschrieben. Kommt dieser Fall vor?
Ja, immer. Auch den dritten Tab kann ich mit der Startseite überschreiben. Aber ich kann per Navigation auch wieder zurück zur jeweiligen Seite.Zitat von aborixWerden neue Tabs immer rechts neben dem aktiven geöffnet?
Nicht neben dem aktiven Tab. Denn neue Tabs werden (sollen) immer ganz am rechten Ende geöffnet werden. Das habe ich so in TMP eingestellt. -
Ok, klar.
Noch was: Werden neue Tabs im Vordergrund geöffnet, d.h. sind sie nach dem Öffnen aktiv? -
Zitat von aborix
Werden neue Tabs im Vordergrund geöffnet, d.h. sind sie nach dem Öffnen aktiv?
Ja, auch das ist in TMP so eingestellt. Nur per Mittleklick kommen sie nicht in den Vordergrund.[attachment=0]Bild 1.jpg[/attachment]
Wichtig! Denn das habe ich vergessen zu erwähnen:
Das Skript aus Beitrag #18 funktioniert schon, allerdings immer nur beim ersten Aufruf einer beliebigen Seite.
Und auch nur dann, wenn ich vorher den Cache leere und einen Neustart mache. Und danach ist noch etwas seltsam, denn beim Aufruf einer Seite wird der Seiteninhalt nicht angezeigt. Ich muss Firefox dazu erst als Fenster verkleinern.
Dann erscheint der Seiteninhalt... -
-
Das funktioniert auch nur beim ersten Aufruf. Danach rückt der Tab auf, denn der zweite Tab nimmt beim Öffnen eines neuen Tabs den Platz vom ersten Tab ein. Aber nur dann, wenn im ersten Tab die Startseite geöffnet ist. Und der Seiteninhalt fehlt trotzdem.
-
Nächster Versuch.
Die Startseite wird nicht mehr eingetragen, das Skript liest sie aus den Fx-Einstellungen aus.
Code
Alles anzeigen(function() { var startpage = Cc['@mozilla.org/preferences-service;1'].getService(Ci.nsIPrefBranch).getCharPref("browser.startup.homepage"); gBrowser.tabContainer.addEventListener("TabOpen", checkTabs); function checkTabs(event) { if (gBrowser.selectedBrowser.currentURI.spec == startpage) { var i = gBrowser.selectedTab._tPos; gBrowser.moveTabTo(event.target, i); gBrowser.removeTab(gBrowser.selectedTab); }; }; }) ();
-
Hallo,
das sieht bis jetzt ganz gut aus, aber der Seiteninhalt fehlt immer noch.
-
Den fehlenden Seiteninhalt kann ich nicht reproduzieren.
Zitat von camel-joebeim Aufruf einer Seite wird der Seiteninhalt nicht angezeigt. Ich muss Firefox dazu erst als Fenster verkleinern.
Dann erscheint der Seiteninhalt.
Ist der Fehler damit genau beschrieben?
Wann genau tritt er auf?
Zeige ihn mir auch auf einem Screenshot des gesamten Fx-Fensters.Teste das Skript bitte in einem neuen Profil.
Es soll userChromeJS und TMP enthalten und sonst keine Erweiterungen und auch nur dieses eine Skript. -
Der Fehler tritt immer dann auf, wenn die Startseite überschrieben werden soll. In der Adressleiste wird zwar der Link der aufgerufenen Seite angezeigt, auch der Name vom Tab wird geändert, aber der Inhalt taucht nicht auf.
Ich sehe nur eine leere Fläche. Und ich habe noch etwas herausgefunden. Wenn ich irgendeine Taste auf der Tastatur betätige, dann ist der Inhalt plötzlich auch vorhanden. Das gleiche gilt für geöffnete Programme in der Taskleiste.
Beispiel: Der Editor ist auch geöffnet, aber Firefox ist noch im Vordergrund. Nun hole ich aus der Taskleiste den Editor in den Vordergrund. Der ist als Fenster eingestellt. Man sieht daher genau, dass schon beim Klick darauf der Seiteninhalt in Firefox erscheint.
Ich habe das Skript auch so getestet:
- Portable Firefox 10.0 - ESR installiert.
- Update auf 17.0.11 - ESR gemacht.
- userChromeJS installiert.
- aboutnotblank.uc.js eingefügt.Das Verhalten ist identisch, bis auf einen Punkt: Wenn ich irgendeine Taste auf der Tastatur betätige, dann erscheint kein Inhalt.
Zusammenfassung
Mein Browser (Version 17):
Firefox als Fenster: Seiteninhalt erscheint.
Anderes Programm: Seiteninhalt erscheint.
Klick auf Tastatur: Seiteninhalt erscheint.Browser + Profil neu (Version 17):
Firefox als Fenster: Seiteninhalt erscheint.
Anderes Programm: Seiteninhalt erscheint.
Klick auf Tastatur: Seiteninhalt erscheint nicht.Und dann noch ein Punkt, denn auch das wollte ich testen: Unter Firefox 24.x ESR funktioniert das Skript ohne Fehler. Und zwar mit dem Profil, welches ich auch unter dem 17er verwende. Ich werde dann wohl umsteigen, denn in ein paar Wochen hat der 17er ja eh ausgedient, weil keine Updates mehr kommen.
Meine Frage dazu: Du hast mir ja mehrere Skripte vorgegeben. Welches sollte ich verwenden, falls alle mit Firefox 24 funktionieren, da es ja anscheinend an Firefox 17 liegen könnte?
-
Ich habe nun den Fehler in Fx 17esr teilweise reproduzieren können: manchmal ist der Inhalt da, manchmal nur teilweise, manchmal nicht.
Nimm folgendes Skript, es ist das von Beitrag #28, wobei Zeile 3 vereinfacht wurde.
Die anderen Skripte haben auch in Fx 24esr (und Fx 25) Fehler.Code
Alles anzeigen(function() { var startpage = Services.prefs.getCharPref("browser.startup.homepage"); gBrowser.tabContainer.addEventListener("TabOpen", checkTabs); function checkTabs(event) { if (gBrowser.selectedBrowser.currentURI.spec == startpage) { var i = gBrowser.selectedTab._tPos; gBrowser.moveTabTo(event.target, i); gBrowser.removeTab(gBrowser.selectedTab); }; }; }) ();
Ich habe auch noch ein anderes, neues, Skript, das funktioniert bei mir bisher in allen Fx-Versionen fehlerfrei:Code
Alles anzeigen(function() { var startpage = Services.prefs.getCharPref("browser.startup.homepage"); gBrowser.tabContainer.addEventListener("TabOpen", checkTabs); function checkTabs(event) { var oldtab, newtab, i; oldtab = gBrowser.selectedTab; if (gBrowser.getBrowserForTab(oldtab).currentURI.spec == startpage) { i = oldtab._tPos; newtab = event.target; newtab.style.visibility = "collapse"; window.setTimeout(tabmanip, 500); }; function tabmanip() { gBrowser.removeTab(oldtab); gBrowser.moveTabTo(newtab, i); newtab.style.visibility = "visible"; }; }; }) ();
Noch eine Frage:
Hast du die Tab-Animation beim Öffnen und Schließen aktiviert?
Das ist einstellbar in TMP unter Verhalten → Tab-Funktionen und in about:config unter browser.tabs.animate. -
Hallo,
welches der Skripte aus Beitrag #32 wäre denn vorzuziehen? Nr. 2? Die Tab-Animationen sind bei mir alle deaktiviert.
-
Für Fx 17 das zweite, sofern es bei dir auch fehlerfrei läuft;
für Fx 24 das erste. -
Zitat von aborix
Für Fx 17 das zweite, sofern es bei dir auch fehlerfrei läuft; für Fx 24 das erste.
Jetzt bin ich irritiert, denn Du schreibst ja über dem ZWEITEN Skript: "Ich habe auch noch ein anderes, neues, Skript, das funktioniert bei mir bisher in allen Fx-Versionen fehlerfrei."Warum also für Firefox 24 das ERSTE verwenden, wenn es doch bisher im ZWEITEN keine Fehler gibt?
-
Das hat mit der Tab-Animation zu tun.
Ist diese aktiviert, so ist mit Skript 1 beim Überschreiben der Startseite eine kurze Animation, wie beim Tab-Öffnen, zu sehen. Die gehört hier natürlich nicht hin.
Skript 2 blendet diese Animation aus, allerdings um den Preis, daß die Startseite noch eine halbe Sekunde zu sehen ist und erst dann die neue Seite erscheint.
Daß das Fehlen des Seiteninhaltes hier nicht auftritt, ist eine willkommene Nebenwirkung, die nicht von mir programmiert ist. (Ich wüsste auch gar nicht wie, weil ich die Fehlerursache nicht kenne.)Wenn nun die Tab-Animation ohnehin deaktiviert ist, ist daher Skript 1, sofern es fehlerfrei läuft, besser.
Jedoch:
Ersetzt man in Skript 2 in Zeile 14 die Zahl 500 durch 0, so gibt es ebenfalls keine Verzögerung (was ohne Tab-Animation ja nichts ausmacht).
Auch mit dieser Änderung läuft das Skript bei mir bisher in allen Fx-Versionen fehlerfrei.
Ich habe das nur vorhin noch nicht erwähnt, um die Sache nicht noch komplizierter zu machen, aber jetzt ist das schon egal.So, nachdem nun die Verwirrung komplett ist :wink: , eine
Zusammenfassung:
(bisher) bestmögliche Lösung:
in Skript 2 500 durch 0 ersetzen,
und dann
Skript 2 für Fx 17 und Skript 1 für Fx 24
oder
Skript 2 für beide Füchse. -
Hallo,
stimmt, es war schon ein wenig kompliziert. Aber ich frage lieber nach, denn es hätte ja auch sein können, dass Du Dich verschrieben hast. :mrgreen:
Bis jetzt keine Fehler. Mensch, aborix, Du könntest den Code doch glatt als Erweiterung und Nachfolger für about:NotBlank anbieten. :klasse:
-
Hallo aborix,
dieser Code funktioniert nur zum Teil in der Nightly. Die Startseite wird zwar überschrieben, aber immer, mit jedem Link.
Bisher ist es so (so soll es auch sein), dass die Startseite überschrieben wird, aber nur 1x, alle anderen Links werden jeweils in einem anderen Tab geöffnet. Liegt das an TMP? Muss ich da warten, ob TMP für 57+ kommt?
Code
Alles anzeigen(function() { var startpage = Services.prefs.getCharPref("browser.startup.homepage"); gBrowser.tabContainer.addEventListener("TabOpen", checkTabs); function checkTabs(event) { var oldtab, newtab, i; oldtab = gBrowser.selectedTab; if (gBrowser.getBrowserForTab(oldtab).currentURI.spec == startpage) { i = oldtab._tPos; newtab = event.target; newtab.style.visibility = "collapse"; window.setTimeout(tabmanip, 0); }; function tabmanip() { gBrowser.removeTab(oldtab); gBrowser.moveTabTo(newtab, i); newtab.style.visibility = "visible"; }; }; }) ();
-
Bis Fx 56 lässt du (von TMP) jeden Link in einem neuen Tab öffnen, richtig?
Und mit Fx 57 und 58 nicht (weil dort TMP nicht funktioniert), auch richtig? -
Bisher sieht es so aus:
[attachment=0]Bild 1.jpg[/attachment]
Und in der Nightly sind keine speziellen Einträge gemacht worden.
-