picknikker: Maskierung falsch??

Hallo Leute,

bin hier grad etwas am verzweifeln. Leider funktioniert folgende Codezeile nicht und ich weiß nicht warum:

<script type="text/javascript">  
  
if(document.getElementsByTagName("html")[0].innerHTML.indexOf("incl="+"uding")>-1) document.write("<script type=\"text/javascript\">window.location.href=\"http://www.beispiel.de\";</script>");  
  
</script>

Das gleiche Script funktioniert an anderer Stelle wunderbar. Dort gibt es eine andere Zeile aus, aber vom Prinzip her ist es das gleiche Ding.

Habe ich hier die Maskierung falsch vorgenommen?

  1. Hi,

    <script type="text/javascript">

    if(document.getElementsByTagName("html")[0].innerHTML.indexOf("incl="+"uding")>-1) document.write("<script type="text/javascript">window.location.href="http://www.beispiel.de";</script>");
    </script>

    
    > Habe ich hier die Maskierung falsch vorgenommen?  
      
    Ja. Am Ende des auszugebenden Strings steht ;</script>  
    Das </ beendet den Scriptbereich, dort bleibt dann ein unvollständiges document.write zurück, welches nicht ausgeführt werden kann.  
    Das </ muß also aufgeteilt werden.  
      
    Abgesehen davon: soll per indexOf wirklich nach 'incl=uding' gesucht werden?  
      
    cu,  
    Andreas
    
    -- 
    [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
    [O o ostern ...](http://ostereier.andreas-waechter.de/)  
      
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.  
    
    
    1. Das </ muß also aufgeteilt werden.

      Hi Andreas, was heißt denn "aufgeteilt"? Wie muss ich mir das konkret vorstellen?

      Abgesehen davon: soll per indexOf wirklich nach 'incl=uding' gesucht werden?

      Nein, das "=" hat sich hier eingeschliechen. Wird noch korrigiert, danke

      1. Tach!

        Das </ muß also aufgeteilt werden.
        Hi Andreas, was heißt denn "aufgeteilt"? Wie muss ich mir das konkret vorstellen?

        Es reicht, den / mit einem \ zu maskieren. Ansonsten ist mit aufteilen gemeint, den String zweizuteilen und zu verbinden, so wie du das beim including getan hast (warum an der Stelle auch immer).

        dedlfix.

        1. [latex]Mae  govannen![/latex]

          Das </ muß also aufgeteilt werden.
          Hi Andreas, was heißt denn "aufgeteilt"? Wie muss ich mir das konkret vorstellen?

          Es reicht, den / mit einem \ zu maskieren.

          Ja.

          Ansonsten ist mit aufteilen gemeint, den String zweizuteilen und zu verbinden, so wie du das beim including getan hast (warum an der Stelle auch immer).

          Aufteilung von Zeichenketten, um $ungewünschteneffekt zu vermeiden halte ich eigentlich so gut wie immer für den falschen Weg. Es kann beispielsweise bei vielen Projekten passieren, daß $weitereperson den Code bearbeitet und sich denkt, daß man die (seiner Meinung nach unsinnige) Trennung wegoptimieren kann -> Fehler. Saubere Maskierung hingegen vermeidet dies. (und ist zudem noch kürzer)

          Stur lächeln und winken, Männer!
          Kai

          --
          It all began when I went on a tour, hoping to find some furniture
           Followed a sign saying "Beautiful Chest", led to a lady who showed me her best)
          SelfHTML-Forum-Stylesheet
          1. Hi,

            Aufteilung von Zeichenketten, um $ungewünschteneffekt zu vermeiden halte ich eigentlich so gut wie immer für den falschen Weg. Es kann beispielsweise bei vielen Projekten passieren, daß $weitereperson den Code bearbeitet und sich denkt, daß man die (seiner Meinung nach unsinnige) Trennung wegoptimieren kann -> Fehler. Saubere Maskierung hingegen vermeidet dies.

            Inwiefern vermeidet "</", daß $weitereperson sich denkt: 'ein escapter Slash ist auch nur ein Slash, also weg mit dem Backslash!'?
            Die Gefahr, daß das passiert, halte ich für etwa gleich groß.

            Egal welche Art der Aufteilung von "</" gewählt wird: so etwas gehört kommentiert.

            (Insgesamt gesehen wäre es m.E. noch sinnvoller, das Script-Element per DOM zu erstellen statt per document.write)

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
            1. Tach!

              Egal welche Art der Aufteilung von "</" gewählt wird: so etwas gehört kommentiert.

              Dann müsste &amp; und " und jegliche Maskierung kommentiert werden. Für mich "gehört" das zum Grundwissen eines Programmieres.

              dedlfix.

            2. Hallo,

              (Insgesamt gesehen wäre es m.E. noch sinnvoller, das Script-Element per DOM zu erstellen statt per document.write)

              Frage: Wieso muss hier überhaupt ein Script-Element erzeugt werden?

              if(document.getElementsByTagName("html")[0].innerHTML.indexOf("incl"+"uding")>-1)  
                window.location.href="http://www.beispiel.de";
              

              tuts doch genauso...
              vg frankobär

              1. Hi,

                (Insgesamt gesehen wäre es m.E. noch sinnvoller, das Script-Element per DOM zu erstellen statt per document.write)
                Frage: Wieso muss hier überhaupt ein Script-Element erzeugt werden?

                if(document.getElementsByTagName("html")[0].innerHTML.indexOf("incl"+"uding")>-1)

                window.location.href="http://www.beispiel.de";

                  
                Weil vielleicht anstelle des script-Elements mit Code-Inhalt (der eigentlich auf example.org statt auf beispiel.tld verweisen sollte) ein script-Element mit src-Element steht.  
                  
                cu,  
                Andreas
                
                -- 
                [Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)  
                [O o ostern ...](http://ostereier.andreas-waechter.de/)  
                  
                Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.  
                
                
        2. Es reicht, den / mit einem \ zu maskieren.

          Vielen Dank! Das war es.

        3. Hi,

          Hi Andreas, was heißt denn "aufgeteilt"? Wie muss ich mir das konkret vorstellen?
          Es reicht, den / mit einem \ zu maskieren.

          Damit ist die Zeichenfolge </ ja auch aufgeteilt.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        4. Hi,

          so wie du das beim including getan hast (warum an der Stelle auch immer).

          Ganz einfach: hätte er hier nicht aufgeteilt, hätte das indexOf('including') auf jeden Fall einen Treffer erzielt, nämlich den im indexOf (das indexOf steht ja in einem script-Element, also im Dokument). Um das zu vermeiden, wird der String hier aufgeteilt.

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.