Andre: Merkwürdiges Phänomen

in einer Internetseite habe ich einen Iframe (A) darin habe ich einen Iframe (B).
Ich habe einen normalen Link in A mit target nach B,
was auch funktioniert.
Es wird eine Uploadseite in B geladen, und natürlich ist da ein "input type file" drin.
Wähle ich nun ein bild, und lasse es per JS anzeigen, ist immernoch alles prima.
Und jetzt kommts: Wenn ich wider in Iframe A auf diesen link klicke,
öffnet sich das uploadscript in einem neuen fenster anstatt in iframe B !
Watt is denn datt ?
Hat jemand ne Idee warum das so ist ?

Andre

  1. Hallo! (Begrüßung)

    in einer Internetseite habe ich einen Iframe (A) darin habe ich einen Iframe (B).

    Schlimm genug.

    Ich habe einen normalen Link in A mit target nach B,
    was auch funktioniert.
    Es wird eine Uploadseite in B geladen, und natürlich ist da ein "input type file" drin.
    Wähle ich nun ein bild, und lasse es per JS anzeigen, ist immernoch alles prima.

    Wie lässt du das Bild anzeigen?

    Und jetzt kommts: Wenn ich wider in Iframe A auf diesen link klicke,
    öffnet sich das uploadscript in einem neuen fenster anstatt in iframe B !

    Dann wird es wohl kein Fenster mit dem Namen B geben.

    Watt is denn datt ?
    Hat jemand ne Idee warum das so ist ?

    Wahrscheinlich ändert dein Script auch den Namen vom Iframe B.
    Allerdings kann ich nicht viel dazu sagen, weil ich keinerlei Code von dir gesehen habe. (ausser natürlich, dass du möglichst auf (I)Frames verzichten solltest.)
    Ein Live-Beipiel wäre auch hilfreich.

    Gruß aus Iserlohn

    Martin

    1. Das eine Meldung kam wegen der Iframes war mir klar,
      da aber niemand weiss worum es geht sind Kommentare dazu überflüssig, oder ?

      Beispeil zeigen geht nicht, ist eine Anwendung nur im Intranet.
      Code kann ich teileweise Posten, weil die Seiten definitiv zu lange sind.

      Hier der link von Iframe A nach Iframe B:
      <a href="upload.php?feld='.$id.'&campid='.$campid.'&sprache='.$sprache.'" target="supframe">ändern</a>

      Wie man sieht ein ganz normaler link, nach iframe B (der ist in Iframe A)

      Die routine die bei onchange Klick auf den "input type file-button" aufgerufen wird:
      function dateiname() {
       bewegung=0;
       document.getElementById("auswahl").style.left=5;
       document.getElementById("auswahl").style.top=100;
       document.getElementById("auswahl").style.cursor="pointer";
       document.upl.xa.value=0; document.upl.ya.value=0; document.upl.xe.value=0; document.upl.ye.value=0;
       a=document.upl.file.value;                                                     // endung prüfen
       typ=a.substring(a.lastIndexOf(".")).toLowerCase();
       if (typ!=".jpg" && typ!=".gif") {                                              // falsch !
        alert("Nur Bilder der Typen jpg und gif sind erlaubt! \n");
        document.getElementById("uploadbutton").style.visibility="hidden";            // kein upload
        return false;
       }
       name="<? echo $campid.'.'.$feld.'.'.$sprache.'.jpg'; ?>";                      // bildname!
       document.upl.bild.value=name;
       bild=a;                                                                        // bild anzeigen
       document.images["preview"].src=bild;
      }

      Nur die vorletzte zeile ist wichtig.

      Okay, ich vergass, ich habe noch ein Script in Iframe A das das Iframe B automatisch an den inhalt anpasst:

      h = document.frames('supframe').document.body.scrollHeight;
        document.all.supframe.style.height = h + 'px';
        this.scrollTo(0,1999);
      das wird per onload aufgerufen, das ändernt nur die höhe,
      und es wird aufgerufen wenn ein anderes bild augewähltwurde und
      geladen wurde, damit der iframe B wieder die richtige größe hat.
      Ich habs mal deaktiviert, bringt aber nichts.

      Wenn ich den Namen des Iframes ändern würde, dann wüsste ich das,
      hätte ja die Zeilen proggen müssen.

      Hallo! (Begrüßung)

      in einer Internetseite habe ich einen Iframe (A) darin habe ich einen Iframe (B).

      Schlimm genug.

      Ich habe einen normalen Link in A mit target nach B,
      was auch funktioniert.
      Es wird eine Uploadseite in B geladen, und natürlich ist da ein "input type file" drin.
      Wähle ich nun ein bild, und lasse es per JS anzeigen, ist immernoch alles prima.

      Wie lässt du das Bild anzeigen?

      Und jetzt kommts: Wenn ich wider in Iframe A auf diesen link klicke,
      öffnet sich das uploadscript in einem neuen fenster anstatt in iframe B !

      Dann wird es wohl kein Fenster mit dem Namen B geben.

      Watt is denn datt ?
      Hat jemand ne Idee warum das so ist ?

      Wahrscheinlich ändert dein Script auch den Namen vom Iframe B.
      Allerdings kann ich nicht viel dazu sagen, weil ich keinerlei Code von dir gesehen habe. (ausser natürlich, dass du möglichst auf (I)Frames verzichten solltest.)
      Ein Live-Beipiel wäre auch hilfreich.

      Gruß aus Iserlohn

      Martin

      1. Hi Andre,

        Hier der link von Iframe A nach Iframe B:
        <a href="upload.php?feld='.$id.'&campid='.$campid.'&sprache='.$sprache.'" target="supframe">ändern</a>

        Kann es sein das der iframe B "subframe" heißt und nicht "supframe"?
        Dann findet der Browser kein target namens "supframe" und nimmt ein neues fenster.

        Gruß, Marian

        PS: Und bitte kein TOFU mehr.

      2. HI!

        Das eine Meldung kam wegen der Iframes war mir klar,
        da aber niemand weiss worum es geht sind Kommentare dazu überflüssig, oder ?
        Beispeil zeigen geht nicht, ist eine Anwendung nur im Intranet.

        Nein, niemand weiss worum es geht => jeder geht davon aus, es geht um eine Webanwendung. Wenn du was fürs Intranet baust, dann sag das gleich dabei.

        Hier der link von Iframe A nach Iframe B:
        <a href="upload.php?feld='.$id.'&campid='.$campid.'&sprache='.$sprache.'" target="supframe">ändern</a>

        Du hast die "&" nicht maskiert (dies ist nur Hinweis, hat mit deinem Problem nix zu tun).

        Wie man sieht ein ganz normaler link, nach iframe B (der ist in Iframe A)

        Nein, wie man sieht ist es nicht der Code, der beim Client ankommt, und _nur_darauf_ kommt es an.

        Die routine die bei onchange Klick auf den "input type file-button" aufgerufen wird:
        function dateiname() {
        bewegung=0;
        document.getElementById("auswahl").style.left=5;
        document.getElementById("auswahl").style.top=100;
        document.getElementById("auswahl").style.cursor="pointer";
        document.upl.xa.value=0; document.upl.ya.value=0; document.upl.xe.value=0; document.upl.ye.value=0;
        a=document.upl.file.value;

        Hast du hier am Browser rausgeschraubt, oder warum akzeptiert der nen Zugriff auf input type="file"?

        // endung prüfen

        typ=a.substring(a.lastIndexOf(".")).toLowerCase();
        if (typ!=".jpg" && typ!=".gif") {                                  >            // falsch !

        Was ist mit .jpeg?

        alert("Nur Bilder der Typen jpg und gif sind erlaubt! \n");
          document.getElementById("uploadbutton").style.visibility="hidden";            // kein upload
          return false;
        }
        name="<? echo $campid.'.'.$feld.'.'.$sprache.'.jpg'; ?>";

        Auf einmal doch nur .jpg?

        // bildname!
        document.upl.bild.value=name;
        bild=a;                                                                        // bild anzeigen
        document.images["preview"].src=bild;
        }

        Nur die vorletzte zeile ist wichtig.

        Wenn ich den Namen des Iframes ändern würde, dann wüsste ich das,
        hätte ja die Zeilen proggen müssen.

        Ich kann in diesem Code auch nichts finden, was für das Verhalten verantwortlich ist. Allerdings hast du auch nicht den Code angegeben, der beim Cliebt ankommt.

        Gruß aus Iserlohn

        Martin

        1. Hier sind zwar wache Augen,
          aber brauchbares kommt leider nicht.
          Das was alles geschrieben wird ist entäuschend.
          Ich werd mal mit einem MS-Mitarbeiter chatten ...

          Aber zu deinen Kommentare gebe ich mal meinen Senf ab:

          ->Wenn du was fürs Intranet baust, dann sag das gleich dabei.

          Wenn interessiert das ?

          ->Du hast die "&" nicht maskiert

          Brauch ich nicht.

          ->Nein, wie man sieht ist es nicht der Code, der beim Client ankommt, und _nur_darauf_ kommt es an.

          Was PHP da einbaut ist völlig uninteressant.

          ->Hast du hier am Browser rausgeschraubt, oder warum akzeptiert der nen Zugriff auf input type="file"?

          was ist an einem <input type="file" onchange="irgendwas()"> so besonders ?

          Ich habe im laufe des Tages noch einige Ideen gehabt und getestet,
          diverse Debugger bringen auch keine Lösung.

          Mögliche Lösung, ich nehme den "file" raus und progge mir selber einen.

          Trotzdem Danke für den Versuch.
          Ich denke es ist ein Bug im IE.

          HI!

          Das eine Meldung kam wegen der Iframes war mir klar,
          da aber niemand weiss worum es geht sind Kommentare dazu überflüssig, oder ?
          Beispeil zeigen geht nicht, ist eine Anwendung nur im Intranet.

          Nein, niemand weiss worum es geht => jeder geht davon aus, es geht um eine Webanwendung. Wenn du was fürs Intranet baust, dann sag das gleich dabei.

          Hier der link von Iframe A nach Iframe B:
          <a href="upload.php?feld='.$id.'&campid='.$campid.'&sprache='.$sprache.'" target="supframe">ändern</a>

          Du hast die "&" nicht maskiert (dies ist nur Hinweis, hat mit deinem Problem nix zu tun).

          Wie man sieht ein ganz normaler link, nach iframe B (der ist in Iframe A)

          Nein, wie man sieht ist es nicht der Code, der beim Client ankommt, und _nur_darauf_ kommt es an.

          Die routine die bei onchange Klick auf den "input type file-button" aufgerufen wird:
          function dateiname() {
          bewegung=0;
          document.getElementById("auswahl").style.left=5;
          document.getElementById("auswahl").style.top=100;
          document.getElementById("auswahl").style.cursor="pointer";
          document.upl.xa.value=0; document.upl.ya.value=0; document.upl.xe.value=0; document.upl.ye.value=0;
          a=document.upl.file.value;

          Hast du hier am Browser rausgeschraubt, oder warum akzeptiert der nen Zugriff auf input type="file"?

          // endung prüfen

          typ=a.substring(a.lastIndexOf(".")).toLowerCase();
          if (typ!=".jpg" && typ!=".gif") {                                  >            // falsch !

          Was ist mit .jpeg?

          alert("Nur Bilder der Typen jpg und gif sind erlaubt! \n");
            document.getElementById("uploadbutton").style.visibility="hidden";            // kein upload
            return false;
          }
          name="<? echo $campid.'.'.$feld.'.'.$sprache.'.jpg'; ?>";

          Auf einmal doch nur .jpg?

          // bildname!
          document.upl.bild.value=name;
          bild=a;                                                                        // bild anzeigen
          document.images["preview"].src=bild;
          }

          Nur die vorletzte zeile ist wichtig.

          Wenn ich den Namen des Iframes ändern würde, dann wüsste ich das,
          hätte ja die Zeilen proggen müssen.

          Ich kann in diesem Code auch nichts finden, was für das Verhalten verantwortlich ist. Allerdings hast du auch nicht den Code angegeben, der beim Cliebt ankommt.

          Gruß aus Iserlohn

          Martin

          1. Hi!

            Hier sind zwar wache Augen,
            aber brauchbares kommt leider nicht.
            Das was alles geschrieben wird ist entäuschend.
            Ich werd mal mit einem MS-Mitarbeiter chatten ...

            Du bist nicht der erste, der die hier angebotene Hilfe nicht annimmt.

            Aber zu deinen Kommentare gebe ich mal meinen Senf ab:

            ->Wenn du was fürs Intranet baust, dann sag das gleich dabei.

            Wenn interessiert das ?

            Ich zitiere einfach mal die Hilfe/FAQ: Geben Sie besondere Umgebungsbedingungen wie Browser und Betriebssystem etc. bekannt. Für ein Intranet gelten z.B. andere Maßstäbe als für im World Wide Web veröffentlichte Seiten.

            Im WWW gäb es z.B. noch Browser ausserhalb deiner Kontrolle. Ein Opera gibt bei <input type="file" onchange="alert(this.value);"> nur den Dateinamen zurück, ein IE hingegen den gesamten Pfad.

            ->Du hast die "&" nicht maskiert

            Brauch ich nicht.

            OK, wenn dir Fehler im Code egal sind, kann es mir auch egal sein, ob deine Seite funktioniert.

            ->Nein, wie man sieht ist es nicht der Code, der beim Client ankommt, und _nur_darauf_ kommt es an.

            Was PHP da einbaut ist völlig uninteressant.

            Nein, der PHP-Code zur Erzeugung ist irrelevant. Diesen kriegt ja auch der Browser nciht zu sehen.

            ->Hast du hier am Browser rausgeschraubt, oder warum akzeptiert der nen Zugriff auf input type="file"?

            was ist an einem <input type="file" onchange="irgendwas()"> so besonders ?

            Nichts. Meine Erinnerung hat mich nur belogen. ICh dachte, dass ein Zugriff hierauf aus Sicherheitsgründen deaktiviert ist. Es ist aber nur der Schreibzugriff deaktiviert und eine Vorbelegung per value ist auch nicht möglich. Mein Fehler.

            Trotzdem Danke für den Versuch.

            Bitte, bitte.

            Ich denke es ist ein Bug im IE.

            Wäre nicht der erste ;-)

            Gruß aus Iserlohn

            Martin

            PS: Bitte unterlasse TOFU bitte zukünftig.