Jnnbo: Firefox - Logo wird nicht angezeigt

Moin,

ich verstehe die Welt gerade nicht mehr. Eigentlich ist Firefox mein Liebling, allerdings zickt er immer mehr rum, ob es an mir liegt, weiß ich nicht.

Mein Simpler Code sieht so aus

<div class="logo">
      <img src="img/design/logo.jpg" alt="Logo"> 
</div>

Google Chrome (der macht es richtig) stellt diesen Code so da

Alternativ-Text

Firefox (der gerade mal wieder zickt) stellt es so da

Alternativ-Text

Das Logo wird einfach nicht angezeigt. Das CSS dazu sieht so aus

.logo {
	margin-bottom:3em;
	padding-left:5px;
}

woher kommt bitte das </img> am Ende?

akzeptierte Antworten

  1. ich verstehe die Welt gerade nicht mehr.

    Geht mir auch dauernd so, habe mich inzwischen daran gewöhnt.

    Der FF zickt wirklich in der Form, dass er gewisse "Kenntnisse" einer Web-Seite auch nach Änderung und Neu-Laden nicht vergisst.

    Schmeiss alle FF-Instanzen raus (ALT F4) und dann neu an. Hat mir mehrfach geholfen. Das Teil ist kostenfrei, was willst du erwarten?

    Und melde bitte zurück, ob das dein Problem gelöst hat.

    Linuchs

    1. Hallo Linuchs,

      Und melde bitte zurück, ob das dein Problem gelöst hat.

      ich habe jetzt mal alles rückgängig gemacht, was ich in den letzten Stunden gemacht habe. Muss leider sagen es liegt an meiner htaccess Datei und zwar an dieser Zeile:

      RewriteRule ([^/]*)/([^/]*)/([^/]*)$  a-hersteller-serie-geraet.php [l]
      

      Wenn ich diese raus nehme, kann ich auch mein Logo wieder sehen, nehme ich dieses rein ist es weg. Mit dieser Zeile möchte ich erreichen bzw. habe ich erreicht dass ich solche URLS bekomme:

      /brother/dcp/dcp--110-series

      Tja, jetzt stehe ich ganz schön dumm da :/ Ich kann auf beides nicht verzichten.

      Meine komplette htaccess sieht so aus

      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME}\.php -f
      RewriteRule ^(.*)$ $1.php
      RewriteRule ([^/]*)/([^/]*)/([^/]*)$  a-hersteller-serie-geraet.php [l]
      
      1. Hallo Linuchs,

        ok, ich kann Verzeichnisse ausschließen:

        RewriteRule ^(img)($|/) - [L]
        

        Da ich mich mit htaccess überhaupt nicht auskenne, weiß ich auch nicht wirklich was diese Zeile alles macht

        RewriteRule ([^/]*)/([^/]*)/([^/]*)$   a-hersteller-serie-geraet.php [l]
        

        aber nun funktioniert es.

        1. Moin!

          Hallo Linuchs,

          ok, ich kann Verzeichnisse ausschließen:

          RewriteRule ^(img)($|/) - [L]
          

          Warum nicht Dateiendungen?

          RewriteRule \.[Jj][Pp][Ee]{0,1}[Gg]$ - [L]
          

          Frisst alles was auf .jpg, .jpeg (auch mit großen Buchstaben) endet.

          Odern noch besser: existierende Dateien ausnehmen? Ok. Das ist, weil der Server nachsehen muss, durchaus "teuer":

          RewriteCond %{REQUEST_FILENAME} -f
          RewriteRule ^(.*)$ - [L]
          

          Da ich mich mit htaccess überhaupt nicht auskenne, weiß ich auch nicht wirklich was diese Zeile alles macht

          Dein Mut zur Wissenslücke ist echt bewundernswert. Und Dein Glück auch. Du hast ja geschrieben, Du bzw. Deine Firma habe noch Kunden.

          RewriteRule ([^/]*)/([^/]*)/([^/]*)$   a-hersteller-serie-geraet.php [l]
          

          Die Werte aus den rundem Klammern benutzt Du nicht auf der rechten Seite. Kannst diese also genau so gut weglassen und Speicher sparen. Der Server wird Dir das danken, wenn eine DDoS-Atacke läuft oder ein Crawler durchdreht.

          RewriteRule [^/]/[^/)/[^/*$ a-hersteller-serie-geraet.php [l]

          1. Hinten steht ein $. Das ist das Symbol für Ende des Strings. Der Anfang ist nicht ggegeben. Was wir uns merken.
          2. Rest [^/]/[^/)/[^/]*
          3. Vor dem Ende dürfen "*" -> kein, ein oder mehrere beliebeige Zeichen stehen die "[^/]" -> kein Slash sind.
          4. Davor ein Slash.
          5. Vor dem eben genannten Slash dürfen "*" -> kein, ein oder mehrere Zeichen stehen die "[^/]" -> kein Slash sind.
          6. Vor dem eben genannten Slash dürfen "*" -> kein, ein oder mehrere Zeichen stehen die "[^/]" -> kein Slash sind.

          Anders ausgedrückt: Irgendwas mit mindestens 2 Slachs, vor und zwischen denen irgendwas oder auch nichts steht. ** Anders ausgedrückt:** Der Regex gehört kauterisiert und durch etwas, ersetzt, dessen Funktion bekannt ist und der Aufgabe gerecht wird.

          aber nun funktioniert es.

          Halte ich für Zufall. Besonders wenn alles noch gehen sollte.

          Jörg Reinholz

          1. Moin!

            RewriteRule [^/]/[^/]/[^/]*$ a-hersteller-serie-geraet.php [l]

            1. Hinten steht ein $. Das ist das Symbol für Ende des Strings. Der Anfang ist nicht gegegeben. Was wir uns gut merken, weil wir einfach von hinten lesen.
            2. Rest [^/]/[^/]/[^/]*
            3. Vor dem Ende dürfen "*" -> kein, ein oder mehrere beliebige Zeichen stehen die "[^/]" -> kein Slash sind.
            4. Davor genau ein Slash.
            5. Vor dem eben genannten Slash dürfen "*" -> kein, ein oder mehrere Zeichen stehen die "[^/]" -> kein Slash sind. Hatten wir doch gerade.
            6. Davor genau ein Slash.
            7. Vor dem eben genannten Slash dürfen kein, ein oder mehrere Zeichen stehen die kein Slash.

            Anders ausgedrückt: Irgendwas mit mindestens 2 Slachs, vor und zwischen und hinter denen irgendwas oder auch nichts steht. Also frisst Dein toller Regex auch nur zwei Slashes.

            Anders ausgedrückt: Der Regex gehört kauterisiert und durch etwas ersetzt, dessen Funktion bekannt ist und der Aufgabe genau gerecht wird - statt irgendwas zu machen und dann Fehler wie die nicht angezeigte Grafik zu produzieren

            Jörg Reinholz

          2. Hallo Jörg,

            Warum nicht Dateiendungen?

            RewriteRule \.[Jj][Pp][Ee]{0,1}[Gg]$ - [L]
            

            Frisst alles was auf .jpg, .jpeg (auch mit großen Buchstaben) endet.

            Was ist, wenn ein Bild plötzlich die Endung *.png *.jpeg *.bmp *.jpg-large hat? ALLES schon dabei gehabt. Wie gesagt ich bekomme die Bilder geliefert und muss diese auch nehmen, ein bearbeiten ist aus Lizenz rechtlichen Gründen nicht erlaubt und bei rund 40.000 Artikel überhaupt nicht möglich, dazumal ich jede Woche bestimmt 1-2 Updates erhalte.

            Odern noch besser: existierende Dateien ausnehmen? Ok. Das ist, weil der Server nachsehen muss, durchaus "teuer":

            RewriteCond %{REQUEST_FILENAME} -f
            RewriteRule ^(.*)$ - [L]
            

            Was heißt "teuer" der Server ist doch dazu da um zu ackern und bei einer Seite die vielleicht pro Tag 100mal aufgerufen wird kann man nicht von viel Traffic reden.

            Dein Mut zur Wissenslücke ist echt bewundernswert. Und Dein Glück auch. Du hast ja geschrieben, Du bzw. Deine Firma habe noch Kunden.

            Jetzt fang doch bitte nicht schon wieder mit solchen Aussagen an, ich kann es einfach nicht mehr hören. Wenn ein Kunde bei mir anruft und eine Patrone bestellt und sagt er möchte aber gerne noch ein Nachfüllset dazu, dann sag ich auch nicht „ Ja passen Sie aber mal auf, sie haben einen teuren Drucker, Sie wissen schon, was dabei alles schief gehen kann, im schlimmsten Fall ist Ihr Drucker anschließend reif für die Tonne“ Nein, das mache ich 100% nicht. Wie schon oft geschrieben es muss funktionieren und gut ist.

            Als du vor 5 – 10 – 15 – 20 Jahren angefangen hast, wusstest du natürlich schon alles, richtig? Wenn ja, dann herzlichen Glückwunsch.

            RewriteRule ([^/]*)/([^/]*)/([^/]*)$   a-hersteller-serie-geraet.php [l]
            

            Anders ausgedrückt:** Der Regex gehört kauterisiert und durch etwas, ersetzt, dessen Funktion bekannt ist und der Aufgabe gerecht wird.

            Ich habe ja bereits geschrieben was ich mit dieser Zeile erreichen möchte. Nach dem .de soll z.B. folgendes kommen /brother/dcp/dcp-357-c alle drei Bezeichnungen müssen dynamisch sein.

            1. Moin!

              Was heißt "teuer" der Server ist doch dazu da um zu ackern und bei einer Seite die vielleicht pro Tag 100mal aufgerufen wird kann man nicht von viel Traffic reden.

              "Teuer" nennt man einen Algorithmus der "viel" Rechenzeit, Speicher oder andere knappe Ressourcen (z.B. Ports) "verbraucht". Denke bitte daran, dass Du die Abrufhäufigkeit nicht steuern kannst. Ich kannte mal einen gewissen Dialerparasit, der hat in seinem "größten deutschen Hilfe-Forum" (es war ein Board) stolz verkündet, dass der Aufbau der Hauptseite 33 Datenbankabfragen erforderte und x Sekunden dauerte. Das war eines der vielen Plugins für dieses "Fertigboard".

              Einfach 20-30x [F5] drücken hat gereicht um das Ding temporär abzuschießen. Und man konnte dabei wunderbar zuschauen.

              Als du vor 5 – 10 – 15 – 20 Jahren angefangen hast, wusstest du natürlich schon alles, richtig? Wenn ja, dann herzlichen Glückwunsch.

              Vor 20 Jahren hab ich sehr viel kleinere Brötchen gebacken.

              Nach dem .de soll z.B. folgendes kommen /brother/dcp/dcp-357-c alle drei Bezeichnungen müssen dynamisch sein.

              Du willst ein virtuelles Verzeichnis. Ok. Dann baue Deine Links etwa so:

              1. http://example.com/printers
              2. http://example.com/printers/hp
              3. http://example.com/printers/hp/laserjet
              4. http://example.com/printers/hp/laserjet/2000m
              RewriteRule ^printers/(.*)/(.*)/(.*)$  hsm.php?hersteller=$1&serie=$2&modell=$3 [L]
              RewriteRule ^printers/(.*)/(.*)$       hsm.php?hersteller=$1&serie=$2 [L]
              RewriteRule ^printers/(.*)$            hsm.php?hersteller=$1 [L]
              RewriteRule ^printers                  hsm.php [L]
              

              Was Du suchst steht, falls geliefert, dann sauber in $_GET und erfordert keine weiteren Bockstürze. Dafür, dass "hp/laserjet/2000m" nicht in $_GET['hersteller'] landet, sorgt die also einzuhaltende Reihenfolge und der Abbruch durch [L].

              Weitere Wünsche, z.B. schließende (Dir-)Slashes, berücksichtige ich gern, wenn ich dafür Zeit übrig habe oder (z.B. durch Drohung mit Waffen oder Geld) gezwungen werde, mir diese zu nehmen.

              Jörg Reinholz

              1. Hallo,

                (z.B. durch Drohung mit Waffen oder Geld)

                Was ist wenn dir mit Waffeln gedroht wird?

                Gruß
                Kalk

                1. Liebe Mitdenker, liebe Wissende, liebe Neugierige,

                  (z.B. durch Drohung mit Waffen oder Geld)

                  Was ist wenn dir mit Waffeln gedroht wird?

                  mmmh

                  und dazu ein großer Cappuccino mit Rum ;-)

                  Dann können mich die Slashes aber mal am Ende ...

                  Spirituelle Grüße
                  Euer Robert
                  robert.r@online.de

                  --
                  Möge der wahre Forumsgeist ewig leben!
          3. Hallo,

            kauterisiert

            boah, was für ein Ausdruck! Ich musste erst mal nachsehen, was das bedeutet!

            So long,
             Martin

      2. Tach!

        Muss leider sagen es liegt an meiner htaccess Datei und zwar an dieser Zeile:

        RewriteRule ([^/]*)/([^/]*)/([^/]*)$  a-hersteller-serie-geraet.php [l]
        

        Kann es sein, dass du ein Cache-Problem hast? Die anderen Browser hatten das Bild noch im Cache und der FF musste es neu laden, woraufhin es der Server nicht mehr ausliefern konnte. Die Ausgbe des DOM und der sortierten CSS-Regeln ist nämlich gleich. Dass Attribute in anderer Reihenfolge als im Quelltext stehen, ist nicht weiter relevant.

        dedlfix.

        1. Hallo dedlfix,

          Kann es sein, dass du ein Cache-Problem hast? Die anderen Browser hatten das Bild noch im Cache und der FF musste es neu laden, woraufhin es der Server nicht mehr ausliefern konnte. Die Ausgbe des DOM und der sortierten CSS-Regeln ist nämlich gleich. Dass Attribute in anderer Reihenfolge als im Quelltext stehen, ist nicht weiter relevant.

          japp das war gestern Abend leider der Fall. Ich hatte meine Seite den ganzen Tag im Google Chrome auf und wollte mein CSS im Firefox testen. Da ist mir das Problem dann aufgefallen.

          Aber wie kann es sein dass der Firefox aus

          <img src="img/design/logo.jpg" alt="Logo">
          

          plötzlich dieses macht

          <img alt="Logo" src="img/design/logo.jpg">
          

          können bzw. dürfen die Browser sich das HTML so drehen wie sie wollen und auch noch andere Sachen wie z.B. ::bevor hinzufügen?

          1. Tach!

            Aber wie kann es sein dass der Firefox aus

            <img src="img/design/logo.jpg" alt="Logo">
            

            plötzlich dieses macht

            <img alt="Logo" src="img/design/logo.jpg">
            

            können bzw. dürfen die Browser sich das HTML so drehen wie sie wollen und auch noch andere Sachen wie z.B. ::bevor hinzufügen?

            Die Reihenfolge, wie Attribute im HTML stehen, ist unerheblich. Die dürfen das genauso rumdrehen, wie du das in beliebiger Reihenfolge schreiben darfst. Problematisch dürfte nur werden, wenn du ein Attribut mehrfach notierst. Da wird dann wohl eins ignoriert werden.

            Auch ::before und ::after ist harmlos. Wenn es keine Auswirkungen hat, darf das ruhig da sein. Andererseites haben Browser auch Default-Stylesheets, mit denen die Elemente formatiert werden, auch wenn du zu denen nichts gesagt hast. Das dürfen und müssen die Browser tun, sonst gibts ohne Autoren-CSS nur Fließtextsuppe.

            dedlfix.

          2. Hallo

            können bzw. dürfen die Browser sich das HTML so drehen wie sie wollen und auch noch andere Sachen wie z.B. ::bevor hinzufügen?

            Das müssen sie sogar. Wenn auch nicht so flapsig wie du es hier darstellst. Sie sollen schließlich versuchen aus jeden noch so falschen Quelltext eine mehr oder weniger vernünftige Darstellung zu zaubern. Wenn sie fehlerhafte Daten bekommen oder der Quellcode Fehler enthält sollen sie schließlich nicht wie ein Programm abstürzen.

            Da die Behandlung von Fehlern nicht geregelt sein kann hält halt jeder Browser seine eigene Fehlerbehandlung vorrätig.

            Ein daraus resultierendes Problem ist leider, das viele Webseitenersteller ihre Fehler nicht mehr erkennen, die Seite wird ja angezeigt. Das dies trotz ihrer Fehler geschieht verstehen sie nicht.

            Gruss

            MrMurphy

          3. Hi,

            Aber wie kann es sein dass der Firefox aus

            <img src="img/design/logo.jpg" alt="Logo">
            

            plötzlich dieses macht

            <img alt="Logo" src="img/design/logo.jpg">
            

            Du guckst in der DOM-Anzeige.

            Aus dem Quellcode erstellt der Browser das Document-Object-Model (DOM), merkt sich zu allen Elementen, welche Attribute angegeben waren, welche Kinder in welcher Reihenfolge aufgetreten sind usw.

            Und bei der DOM-Anzeige werden die Elemente dann wieder dargestellt mit allen Kindern und den angegebenen Attributen. Da die Reihenfolge der Attribute vollkommen wurscht ist (es kommt nur auf Existenz und Wert an), stellt der Browser sie in der Reihenfolge dar, die ihm am Besten gefällt (z.B. nach Name sortiert). Die Reihenfolge der Attribute kann dann zufällig mit der aus dem Quelltext übereinstimmen, muß es aber nicht.

            cu,
            Andreas a/k/a MudGuard

          4. Hallo Jnnbo,

            können bzw. dürfen die Browser sich das HTML so drehen wie sie wollen und auch noch andere Sachen wie z.B. ::bevor hinzufügen?

            Das machen sie nicht. Du meinst bestimmt die Entwicklerwerkzeuge, die

            • Attribute in alphabetischer Reihenfolge auflisten
            • Pseudoelemente an der Stelle im Quelltext auflisten, wo man sie erwarten würde
            • die Einrückung immer konsequent gleich machen
            • optionale Tags hinzufügen
            • invalides CSS entfernen
            • ...

            um die Arbeit des Entwicklers zu erleichtern.

            In der Quelltextansicht (STRG+U) solltest du den Quellcode so sehen, wie er beim Browser angekommen ist und zwar auch bevor irgendwelches JavaScript tätig geworden ist.

            Bis demnächst
            Matthias

            --
            Signaturen sind bloed (Steel) und Markdown ist mächtig.