stefan999: Overlib mit langen Texten

Hallo,

ich verwende Overlib nach folgendem Muster:

<a href="javascript:void(0);" onmouseover="return overlib('text');" onmouseout="return nd();">info</a>

Wenn allerdings "text" Absätze (\n), Anführungszeichen, Sonderzeichen enthält, dann funktioniert natürlich der A HTML Tag nicht mehr.

Wie macht man das, dass ein beliebiger HTML Text unter "text" angezeigt werden könnte?

Gruß und Danke im voraus

stefan

  1. Mahlzeit stefan999,

    <a href="javascript:void(0);" onmouseover="return overlib('text');" onmouseout="return nd();">info</a>

    Wenn allerdings "text" Absätze (\n), Anführungszeichen, Sonderzeichen enthält, dann funktioniert natürlich der A HTML Tag nicht mehr.

    Wie macht man das, dass ein beliebiger HTML Text unter "text" angezeigt werden könnte?

    Man maskiert Sonderzeichen entsprechend dem Kontext, in dem sie vorkommen. Im Kontext "Javascript", in dem Du Dich in diesem Fall befindest, werden z.B. in einem String Zeilenumbrüche als "\n" und Apostrophe als "'" maskiert.

    Die Benutzung von Anführungszeichen ist in der Tat fehlerträchtig, zum Glück aber auch in keinster Weise notwendig - da Javascript als String-Begrenzer auch Apostrophe akzeptiert. Alternativ könnte man natürlich auch die Werte von Attributen in HTML in Apostrophe einschließen ... das ist Geschmackssache.

    Es ist im Allgemeinen nur hilfreich, wenn man sich mit sich selbst auf eine Art und Weise einigt - das macht den Code im Regelfall übersichtlicher.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. ja, aber was ist wenn der html Text Anführungszeichen enthält:

      <a href="link">test</a>

      Dann geht es wohl nicht mehr, oder habe ich jetzt etwas falsch verstanden?

      Gruss
      stefan

      1. Hi,

        ja, aber was ist wenn der html Text Anführungszeichen enthält:

        <a href="link">test</a>

        Dann geht es wohl nicht mehr,

        Was soll an obigem Beispiel denn "nicht gehen"?

        oder habe ich jetzt etwas falsch verstanden?

        Druecke dich bitte so aus, dass wir dich verstehen koennen.
        Und bringe bitte ein Beispiel, wo erkennbar ist, wo Anfuehrungszeichen problematisch sein sollen.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Hallo,

          ein Beispiel:

          <a href="javascript:void(0);" onmouseover="return overlib('<a href="link">test</a>');" onmouseout="return nd();">info</a>

          ergibt die Ausgabe:

          test');" onmouseout="return nd();">info

          Somit funktioniert der Overlib nicht mehr.

          Ich hoffe jetzt ist es klarer.

          Gruß
          stefan

          1. Hi,

            <a href="javascript:void(0);" onmouseover="return overlib('<a href="link">test</a>');" onmouseout="return nd();">info</a>

            ergibt die Ausgabe:

            test');" onmouseout="return nd();">info

            Somit funktioniert der Overlib nicht mehr.

            Wenn du das Zeichen, dass du als Stringbegrenzer nutzt, innerhalb des Strings benutzen willst, dann musst du es maskieren, ja.

            Der Kontext ist im Beispiel allerdings HTML, da du den Wert ja als HTML-Attribut notieren willst.
            http://de.selfhtml.org/html/referenz/zeichen.htm#benannte_html

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
          2. Mahlzeit stefan99,

            <a href="javascript:void(0);" onmouseover="return overlib('<a href="link">test</a>');" onmouseout="return nd();">info</a>

            ergibt die Ausgabe:

            test');" onmouseout="return nd();">info

            Natürlich. Ich spiele mal kurz Browser, ja?

            <a

            Aha, es folgt ein Link.

            href=

            Aha, es folgt ein Attribut.

            "

            Aha, der Attributwert wird also durch Anführungszeichen begrenzt. Das ist ja einfach ...

            javascript:void(0);

            ... schnell den Attributwert bis zum ...

            "

            ... nächsten Anführungszeichen einlesen - fertig!

            onmouseover=

            Aha, es folgt noch ein Attribut.

            "

            Aha, auch dieser Attributwert wird also durch Anführungszeichen begrenzt. Das ist ja einfach ...

            return overlib('<a href=

            ... schnell den Attributwert bis zum ...

            "

            ... nächsten Anführungszeichen einlesen - fertig!

            link"

            Häh? Kenne ich nicht - ignoriere ich also.

            Aja, das öffnende Tag des Links ist hier also beendet.

            test

            Dann ist das der Link-Text.

            </a>

            Aha, hier endet also der Link.

            ');" onmouseout="return nd();">info</a>

            Dann schnell noch dieses Zeug darstellen (kenne ich nicht, also einfach durchreichen) ...

            Somit funktioniert der Overlib nicht mehr.

            Was auch immer "der Overlib" ist. Es funktioniert alles wie beschrieben. Man sollte Sonderzeichen halt - wie bereits angemerkt - immer dem verwendeten Kontext entsprechend maskieren ...

            Ich hoffe jetzt ist es klarer.

            Ja. Dir hoffentlich auch.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|