Erikb: document.URL.replace funzt nicht ???

Hallo zusammen,
ich habe ein Problem. Ich schicke per JS eine Url an unser Mailprogramm und es funktioniert soweit so gut. Per Javascript ändere ich in der Variable bookmarkURL per replace die gesamte URL! Aus "%26" wird "&":

OpenURL( "mailto:?body=" + bookmarkURL.replace( '&', '%26' ) );

Leider muss ich aber mehrere Dinge in der Url ändern. Wie macht man denn so etwas?

Zusätzlich soll in der URL das Symbol "§" in "DE" geändert werden. Folgender Ausdruck geht aber nicht:

OpenURL( "mailto:?body=" + bookmarkURL.replace( '&', '%26' and 'DE', '§' ) );

Ich weiss echt nicht mehr weiter :-(

Viele Grüße,
Erik

  1. Hallo Erikb,

    Aus "%26" wird "&":
    OpenURL( "mailto:?body=" + bookmarkURL.replace( '&', '%26' ) );

    Willst du %26 durch & ersetzen (erste Zeile) oder & durch %26 (zweite Zeile)?
    Falls ersteres: Lass es, auch in einem mailto-Link müssen diese Zeichen kodiert sein.
    Übrigens arbeitet replace() mit regulären Ausdrücken.

    Leider muss ich aber mehrere Dinge in der Url ändern. Wie macht man denn so etwas?

    Es gibt doch extra eine Funktion, die genau das macht: decodeURIComponent() bzw. encodeURIComponent().

    Zusätzlich soll in der URL das Symbol "§" in "DE" geändert werden. Folgender Ausdruck geht aber nicht:
    OpenURL( "mailto:?body=" + bookmarkURL.replace( '&', '%26' and 'DE', '§' ) );

    Nein, das geht nicht. and ist ein boolscher Operator (mal abgesehen davon, dass es bei JavaScript nur && gibt). Bei
    ( '&', '%26' && 'DE', '§' ) kommt dann ( '&', true, '§' ) raus.

    Wenn du mehrmals ersetzen willst, musst du die replace()-Aufrufe hintereinander schreiben. Dann wird das Ergebnis der ersten Ersetzung der zweiten übergeben:

    string = 'ich bin blöd';  
    (string.replace('/ich/', 'du')).replace('/bin/', 'bist');
    

    erst: 'ich bin blöd', dann: 'du bin blöd', dann 'du bist blöd'. Jetzt stimmt's ;-)

    Viele Grüße aus Freiburg,
    Marian

    --
    Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
    <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
    1. Hallo Marian,
      vielen Dank für die schnelle Antwort :-)

      Ich habe noch einmal nachgeragt:

      aus "&" soll "%26" werden und aus "DE" soll "DEU" werden!
      Heisst das, dass ich das so aufbauen muss:

      aus:

      OpenURL( "mailto:?body=" + bookmarkURL.replace( '&', '%26' and 'DE', '§' ) );

      wird:

      OpenURL( "mailto:?body=" + ( bookmarkURL.replace('&', '%26')).replace('DE', 'DEU') );

      Das funzt aber nicht??
      Viele Grüße,
      Erik

    2. Hallo Mariana,
      ich teste gerade und anscheinend klappt es nun:

      OpenURL( "mailto:?body=" + ( bookmarkURL.replace('&', '%26')).replace('DE', 'DEU') );

      Das Leerzeichen vor Bookmark hatte ich weggemacht.
      Ich teste noch etwas weiter.
      Hab noch einmal vielen Lieben Dank - Supi :-)
      Grüsse,
      Erik

      1. Hallo erikb,

        Hallo Mariana,

        Marian (♂) heiße ich ;)

        ich teste gerade und anscheinend klappt es nun:

        OpenURL( "mailto:?body=" + ( bookmarkURL.replace('&', '%26')).replace('DE', 'DEU') );

        Komisch. In der Dokumentation steht, dass replace() Reguläre Ausdrücke verwendet. Bei mir geht es aber so auch.

        Ich dachte du wolltest § durch DE ersetzen und nicht DE durch DEU?

        Viele Grüße aus Freiburg,
        Marian

        --
        Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
        <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
        1. Hallo Marian,
          Entschuldigung. Ich habs zu spät bemerkt und konnte nicht mehr die Änderung vornehmen. Es tut und ich bin echt Froh darüber. Die ganze Probiererei hat ein Ende. Vielen Dank noch einmal. Dein Tipp hat mich darauf gebracht.
          Viele Grüße,
          Erik

    3. Hallo Marian.

      Übrigens arbeitet replace() mit regulären Ausdrücken.

      Wahlweise aber auch mit einfachen Zeichenketten.

      Einen schönen Montag noch.

      Gruß, Mathias

      --
      ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
      debian/rules
      1. Hallo Mathias,

        Übrigens arbeitet replace() mit regulären Ausdrücken.

        Wahlweise aber auch mit einfachen Zeichenketten.

        Aha! Deswegen ging es bei ihm auch so! ;)

        In der SELFHTML-Doku stand davon nix.

        Viele Grüße aus Freiburg,
        Marian

        --
        Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
        <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
        1. Hallo Marian.

          Übrigens arbeitet replace() mit regulären Ausdrücken.

          Wahlweise aber auch mit einfachen Zeichenketten.

          Aha! Deswegen ging es bei ihm auch so! ;)

          In der SELFHTML-Doku stand davon nix.

          Weder ich noch mein Namensvetter sind darüber erfreut, aber es ist nun einmal leider so.

          Einen schönen Montag noch.

          Gruß, Mathias

          --
          ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
          debian/rules
  2. OpenURL( "mailto:?body=" + bookmarkURL.replace( '&', '%26' ) );

    Kann es sein, dass du einfach die Funktion escape() suchst?

    Struppi.

    --
    Javascript ist toll (Perl auch!)