jsdev: HTML Script in php

MoinMoin

Ich hab ein php doc in das html eingebunden ist.
Irgendwann kommt ein onClick Ereignis das eine URL aufruft:
onClick="document.location.href='http://www.google.com'"

Da er aber in php steht hebt ' den html code auf daher steht in meinem php doc zurzeit:
onClick="document.location.href="http://www.google.com""

was leider nicht funktioniert :(

liegt das an der Zeichensetzung oder dem onClick Ereignis an sich? Was ist die Lösung

Danke im voraus

  1. Tach!

    Ich hab ein php doc in das html eingebunden ist.
    [...]
    liegt das an der Zeichensetzung oder dem onClick Ereignis an sich? Was ist die Lösung

    Du schachtelst Code in anderen Code. Jedes System hat seine eigenen Sonderzeichen, die, wenn sie innerhalb von Strings auftauchen, besonders notiert werden müssen. Allgemein dazu musst du den Kontextwechsel beachten. Besonders in deinem Fall auch in der Fortsetzung den Abschnitt "Javascript und HTML". Dazu kommt in deinem Fall noch PHP, aber wenn du das Prinzip einmal verstanden hast, dann sollte das auch nicht mehr problematisch sein.

    Eine ganz andere Herangehensweise wäre allerdings, so genanntes Unobtrusive Javascript zu schreiben. Die Handler werden nicht mehr direkt in den HTML-Code geschrieben, sondern per Javascript gesetzt. Damit fallen die Verschachtlungen weg. Bei Interesse daran, können dir die Javascript-Experten weiterhelfen .

    dedlfix.

  2. Danke das war genau das was ich gesucht hab !!!

  3. Om nah hoo pez nyeetz, jsdev!

    onClick="document.location.href="http://www.google.com""

    Unabhängig von deinem Kontextwechsel-Problem: das Attribut heißt onclick. Die meisten Browser sind jedoch tolerant, allerdings ist dieses Verhalten keine Garantie, dass das immer so bleibt.

    Die JavaScript-Experten werden dir bestimmt auch raten, auf solches inline-JavaScript zu verzichten.

    Matthias

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Baby und Babylon.

    1. Hi,

      onClick="document.location.href="http://www.google.com""

      Unabhängig von deinem Kontextwechsel-Problem: das Attribut heißt onclick. Die meisten Browser sind jedoch tolerant, allerdings ist dieses Verhalten keine Garantie, dass das immer so bleibt.

      in HTML 4.01 ist/war zwar konsequente Kleinschreibung von Element- und Attributnamen empfohlen, aber nicht vorgeschrieben - Browser *müssen* sich in diesem Punkt also tolerant geben. Angesichts der auch sonst recht laxen Syntaxregeln von HTML 5 vermute ich, dass das da auch so ist.

      In XHTML 1.x ist diese konsequente Kleinschreibung zwar vorgeschrieben, nicht nur empfohlen, aber die gängigen Browser sind auch hier tolerant, wenn/weil es als HTML verarbeitet wird. Darauf sollte man sich aber tatsächlich nicht verlassen.

      Die JavaScript-Experten werden dir bestimmt auch raten, auf solches inline-JavaScript zu verzichten.

      Werden sie getan haben. Wobei ich mir nicht sicher bin, ob dedlfix sich als Javascript-Experte sieht.

      Ciao,
       Martin

      --
      Lieber Blödeleien als blöde Laien.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    2. Hallo,

      das Attribut heißt onclick. Die meisten Browser sind jedoch tolerant, allerdings ist dieses Verhalten keine Garantie, dass das immer so bleibt.

      Ob das immer so bleibt, kann ich mangels Glaskugel nicht sagen, aber in allen HTML-Versionen bisher ist spezifiziert, dass Tagnamen und Attribute case-insensitive sind.

      Es gab ja eine Zeit, da wurden <ELEMENTE UND="" ATTRIBUTE=""> immer groß geschrieben. Nicht schön, aber zulässig. ;)

      Für einen HTML5-Parser macht das keinen Unterschied, höchstens für einen XML-Parser.

      Mathias

      1. @@molily:

        nuqneH

        das Attribut heißt onclick.

        Sagt wer?

        Die meisten Browser sind jedoch tolerant,

        Nö. Sie befolgen die Spec, was sie tun müssen (nicht könnten).

        “Element names are always case-insensitive. […] Attribute names are always case-insensitive. Attribute values are generally case-insensitive.” [HTML401]

        “Many strings in the HTML syntax (e.g. the names of elements and their attributes) are case-insensitive, but only for uppercase ASCII letters and lowercase ASCII letters.” [HTML5]

        allerdings ist dieses Verhalten keine Garantie, dass das immer so bleibt.

        Doch, ist es.

        Du wirst nicht müde zu betonen, wie wichtig Abwärtskompatibilität bei HTML5 ist und dass der HTML5-Parser genau so geschrieben wurde, dass er alte Dokumente parsen kann. Und ich weise gelegentlioch auf die Probleme hin, die diese womögliche Fehlentscheidung mit sich bringt. Mir wäre eine von HTML 4 losgelöste Weiterentwicklung (XHTML 2) lieber gewesen, was natürlich bedeutet hätte, dass Browser 2 Parser implementiert haben müssten.

        Ob das immer so bleibt, kann ich mangels Glaskugel nicht sagen,

        Der HTML-Parser wird auch weiterhin angesichts der Myriaden bestehender Webseiten abwärtskompatibel sein. Und selbst wenn es zukünftig doch mal eine nicht abwärtskompatible (?)HTML-Version geben sollte, werden Browser den HTML-Parser weiterhin implementiert haben.

        Qapla'

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
        1. Hallo,

          zur Info, der erste Absatz beginnend mit »das Attribut heißt onclick.« war ein Zitat und stammte von Matthias Apsel, ich hatte das Zitatzeichen aus Versehen entfernt. Es scheint mir, als hätte das hier zu Verwirrung geführt.

          Mathias

        2. Om nah hoo pez nyeetz, Gunnar Bittersmann!

          das Attribut heißt onclick.
          Sagt wer?

          Schrieb ich. Molily hat beim Zitieren nicht aufgepasst, sodass der Eindruck entstand, er schrieb dasselbe wie ich. Er hat mich allerdings in genau dieselbe Richtung berichtigt wie du.

          Dennoch: Wer onClick im Attribut schreibt, schreibt es mit großer Wahrscheinlichkeit auch im JS-Code und dort trifft dann das von mir gesagte wieder zu.

          Matthias

          --
          Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Lachs und Lachsack.

          1. @@Matthias Apsel:

            nuqneH

            Dennoch: Wer onClick im Attribut schreibt, schreibt es mit großer Wahrscheinlichkeit auch im JS-Code und dort trifft dann das von mir gesagte wieder zu.

            In JS heißt es 'click', nicht 'onclick'. ;-)

            Qapla'

            --
            „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)