diwie: Anführungszeichen beim doppelten document.write

Hallo,

in einem externen javascript öffne ich mittels einer funktion ein neues fenster wo folgender code drin enthalten ist.

1 newWindow.document.write('<script type="text/javascript">\n');
2 newWindow.document.write('<!--\n');
3 newWindow.document.write('var count = 1;\n');
4 newWindow.document.write('while(count <= '+screenshots+') {\n');
5 newWindow.document.write('document.write('<img src="test.gif">')\n');
6 newWindow.document.write('count++;\n');
7 newWindow.document.write('}\n');
8 newWindow.document.write('// -->\n');

in zeile 5 ist nun ein problem, vermutlich mit dem doppelten document.write und der anwendung/maskierung der anführungsstriche. entferne ich diese zeile oder benutze einen anderen befehl erfolgt kein abbruch im browser.

das komische, offline (apache webserver) im IE funkioniert die ausgabe. im firefox aber nicht, da sagt der integrierte debugger "count not defined in zeile 6".

hab schon einiges probiert, habe komme nicht auf den weg der lösung, vielleicht kann mir einer von euch weiterhelfen. würde mich freuen!

mfG
diwie

  1. Hi diwie,

    meines Wissens brauchst Du die doppelten Anführungszeichen nicht zu maskieren, da alles innerhalb einfacher Anführungszeichen steht, die doppelten also beim Parsen nicht als Ende des Strings interpretiert werden. Probiere mal! Was passiert dann in Zeile 5?

    "count not defined"? Ich sehe nicht, wo "screenshots" defined sein soll...

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. hi felix,

      meines Wissens brauchst Du die doppelten Anführungszeichen nicht zu maskieren, da alles innerhalb einfacher Anführungszeichen steht, die doppelten also beim Parsen nicht als Ende des Strings interpretiert werden. Probiere mal! Was passiert dann in Zeile 5?

      ich glaube diese version hatte ich auch schon ausprobiert, kann ich aber gerne heute nachmittag zu hause nochmal tun. in der firma gehts leider nicht. ;)

      "count not defined"? Ich sehe nicht, wo "screenshots" defined sein soll...

      diese variable wird der übergeordneten funktion übergeben. habe auch mal testweise einen festen wert reingenommen, das selbe ergebnis.

      der aufruf ist sehr verschachtelt. fangen wir mal an.
      ich lese in einem php include eine textarray aus. erhalte so eine variable. als onclick event öffne ich in diesem php teil ein popup mittels externer javascript funktion der ich diese variable "screenshots" übergebe. diese funktion schreib dann den html code in das popup, daher die doppelte document.write version um im popup die dynamic (schleife) für die unterschiedlichen "screenshots" werte zu schaffen.

      gruß diwie

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      1. hi,

        der aufruf ist sehr verschachtelt.

        ja, ich frage mich, warum?

        diese funktion schreib dann den html code in das popup, daher die doppelte document.write version um im popup die dynamic (schleife) für die unterschiedlichen "screenshots" werte zu schaffen.

        gibt es einen grund, warum die schleife _im_ popup ablaufen müsste?
        warum die schleife nicht auch im hauptfenster ablaufen lassen, und von dort aus ihre ausgaben ins popup schreiben lassen?

        btw: auf die auskommentierung des javascript-codes mittels <!-- ... --> im popup kannst du wohl getrost verzichten - die nimmt man ja normalerweise nur vor, damit ältere browser, die kein script können, keinen murks anzeigen. da du <script ...> etc. aber ja erst mit javascript ins popup schreibst, ist es doch höchst unwahrscheinlich, dass der browser dann anschließend kein javascript mehr versteht ...

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
        1. gibt es einen grund, warum die schleife _im_ popup ablaufen müsste?
          warum die schleife nicht auch im hauptfenster ablaufen lassen, und von dort aus ihre ausgaben ins popup schreiben lassen?

          hab ich so nicht hinbekommen. ;(
          ich schreib mal für was genau das ist, und was ich erreichen möchte.

          auf der seite möchte ich mit kleinen thumbnails meine webprojekte aufzeigen. beim klick auf eines dieser, soll sich ein popup öffnen in der eine größere grafik plus einige informationen zum projekt gezeigt werden. u.a. auch links, kleine gifs, worüber man die angezeigte größere grafik gegen eine andere austauschen kann, "screenshots" halt.
          alle daten zu den projekten stehen in einem textfile, durch seperator getrennt und werden an die javascript funktion übergeben. zb. für projekt 2 anzahl der "screenshots" gleich 6. das javascript-popup soll mir jetzt in einer tabellen zeilen 6-mal hintereinanader einen link mittels kleinem gif-pic generieren, worüber ich die dargestellte grafik im popup austauschen kann.

          soweit zur theorie, d.h. offline (lokaler webserver) im IE funktioniert das ja auch. nur eben nicht im firefox bzw. im IE wenn es auf dem "richtigen" server läuft.

          btw: auf die auskommentierung des javascript-codes mittels <!-- ... --> im popup kannst du wohl getrost verzichten

          da hast du recht. ;) fleigt nachher gleich raus.

          gruß
          diwie

          1. hi diwie,

            soweit zur theorie, d.h. offline (lokaler webserver) im IE funktioniert das ja auch. nur eben nicht im firefox bzw. im IE wenn es auf dem "richtigen" server läuft.

            Wenn es lokal tut, vom Server her aber nicht mehr, dann könnte ich mir vorstellen, dass der Server an Deinem Code etwas "dreht". Du solltest unbedingt prüfen, ob an den maskierten Anführungszeichen die Maskierungen veränder wurden. Stichwort addslashes() usw... Nur eine Idee.

            Liebe Grüße aus Ellwangen,

            Felix Riesterer.

  2. hi,

    5 newWindow.document.write('document.write('<img src="test.gif">')\n');

    in dieser zeile gibst du, im gegensatz zu den anderen, kein die zeile abschließendes semikolon aus.

    das sollte zwar eigentlich kein problem darstellen, aber wenn man javascript in javascript verschachtelt ... wer weiß?

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. 5 newWindow.document.write('document.write('<img src="test.gif">')\n');
      in dieser zeile gibst du, im gegensatz zu den anderen, kein die zeile abschließendes semikolon aus.

      danke werde ich nacher (zu hause) gleich ausprobieren, wäre eine idee? ;) danke

      gruß
      diwie

      1. 5 newWindow.document.write('document.write('<img src="test.gif">')\n');
        in dieser zeile gibst du, im gegensatz zu den anderen, kein die zeile abschließendes semikolon aus.

        danke werde ich nacher (zu hause) gleich ausprobieren, wäre eine idee? ;) danke

        das hat leider auch nicht geholfen....

        gruß
        diwie

  3. Hi,

    5 newWindow.document.write('document.write('<img src="test.gif">')\n');

    Du solltest schlicht und einfach mit single- und double-quotes auskommem und auf Maskierung verzichten.
    Was hindert Dich daran, eine Variable zu definieren:
      var x = '<img src="test.gif">';
    oder uiverseller:
      var q = '"';
    und diese dann zu verwenden?

    freundliche Grüße
    Ingo