Andre: Unterscheidet Browser "generierten" HTML-Code von HTML Code?

Hallo,
Ich möchte mit einem Perl PG den Quelltext für eine HTML Seite ausgeben. In diesem HTML Code ist es möglich ein Popup Fenster zu öffnen. Das geht alles wunderbar ABER wenn ich aus diesem Popup Fenster auf das Haupfenster mittels Opener zugreifen möchte tut sich garnichts. Und jetzt kommt der HAMMER wenn ich den HTML Code der vom Perl PG erzeugt wurde (im Browser) mir anzeigen lasse, diesen in eine HTML Datei Speichere und dann Starte funktioniert der Zugriff mit opener.
Warum nur ist das so ???
Macht der Browser vielleicht einen Unterschied bei manchen Javascript Befehlen ob sie aus einer "echten" HTML Datei stammen?

Danke und Tschüss Andre

---- Quelltext des Perl PGs:
#!/usr/bin/perl

use strict;
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";
print '<html>';
print '<head>';
print '</head>';
print '<script>';
print 'var globaltestvar;';

print 'function Fensterauf() {';

Der Pfad Funktioniert bei mir !!! Fenster wird geöffnet !!!

print 'Fenster = window.open("file:///C|/testtttt/xxxx.htm", "Fenster", "width=500,height=340,scrollbars");';
print '}';
print 'function test(testvar)';
print '{globaltestvar= testvar;';
print '}';
print 'function Wertansehen()';
print '{alert(globaltestvar);';
print '}';
print '</script>';
print '<body bgcolor="#FFFFFF" text="#000000">';
print '<a href="javascript:Fensterauf();">Fenster starten</a> ';
print '<a href="javascript:Wertansehen();">Wert zeigen</a> ';
print '</body> </html>';

---- Quelltext "popupfenster":
<html>
<head>
<script>
function Datensend() {
opener.test("Zeichenkette");
opener.focus();
}
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<a href="javascript:Datensend();">Werte Übermitteln</a>
</body>
</html>

  1. Hallo,

    der Browser macht keinen Unterschied zwischen einer generierten udn einer statischen Seite. Das ganze spielt sich auf dem Server ab, dem Browser ist es egal ob die Datei, .html .php .pl oder .hanswurscht heißt, wichtig ist das der Server die Extensions zuordnen kann.

    Zu deinem Problem:

    Was für eine Fehlermeldung kommt denn genau? Bzw. kann man das Online-Testen?

    Gruß,
    ueps

    1. Was für eine Fehlermeldung kommt denn genau? Bzw. kann man das Online-Testen?

      Hallo,
      Ich wollte gerade das ganze Problem mal Online Stellen zum Ausprobieren und jetzt funktioniert es (ohne Änderung) das muß wohl irgendwie an meinem Lokalem Apache gelegen haben.

      Vielen vielen Dank.

      Ohne deine Anfrage hätte ich es wohl nie Online gestellt.

      Danke und Tschüss Andre

  2. Hallo Andre,

    Warum nur ist das so ???

    kann man sich das auch irgendwo anschauen?

    Macht der Browser vielleicht einen Unterschied bei manchen Javascript Befehlen ob sie aus einer "echten" HTML Datei stammen?

    nein - das html ist ja im Prinzip schon fertig, wenn es im Browser ankommt

    print 'Fenster = window.open("file:///C|/testtttt/xxxx.htm", "Fenster", "width=500,height=340,scrollbars");';

    wie soll das funktionieren? auf c: gibt es bei mir keinen Ordner testtttt mit der Datei xxx.htm.

    Grüße aus Nürnberg
    Tobias

  3. Hi!

    Der Browser kann erstmal keinen Unterschied feststellen, das wäre gar nicht möglich. Höchstens anhand der Endung, aber das dürfte egal sein.
    Eine andere Sache, die ich mir vorstellen könnte: benutzt Du den Internet Explorer? Der macht meines Wissens bei manchen Dingen eine Unterscheidung, ja nachdem ob sie von einem Server geliefert oder lokal geladen werden. Und wenn Du sagst, Du speicherst die Seite ab, dann lädst Du sie bestimmt zu Testen lokal. Versuche mal, die statische Seite von einem Webserver zu laden, vielleicht kommst Du ja zum selben Fehler wie beim Perl-Script...

    VG Simon

    --
    Die voluminöse Expansion subterraler Agrarprodukte steht in reziproker Relation zum Intelligenzquotienten des Produzenten.
  4. Hallo Andre,

    Macht der Browser vielleicht einen Unterschied bei manchen Javascript Befehlen ob sie aus einer "echten" HTML Datei stammen?

    Nein, da macht der Browser keinen Unterschied. In vielen Fällen weiß er es ja gar nicht.

    Wichtig beim Zugriff auf andere Fenster ist aber, dass sich die Seiten, die in den jeweiligen Fenstern angezeigt werden, auf dem gleichn Server befinden. Wenn du also zwei unterschiedliche Server - einen für statischen und einen für per CGI erzeugte Seiten - verwendest, kannst du von einer Seite, die vom ersten Server geschickt wurde, nicht auf eine Seite zugreifen, die vom zweiten kam (kann man das verstehen?).

    Du müsstest also in diesem Fall die Seite, die im Popup-Fenster erscheint auf den Server legen, von dem auch die automatisch generierte Seite kommt.

    viel Erfolg,
    Robert

    PS:

    [viele prints]

    Wenn du

    print <<ENDE;
    ganz viel Quelltext...
    noch mehr Quelltext...
    ENDE

    verwendest, geht's einfacher. Hat aber nichts mit deinem Problem direkt zu tun.

    --
    Dieser Beitrag wurde zu 100% aus ganzen Sätzen hergestellt und ist biologisch abbaubar.
  5. Hi,

    Das geht alles wunderbar ABER wenn ich aus diesem Popup Fenster auf das Haupfenster mittels Opener zugreifen möchte tut sich garnichts.

    lass mich raten: "Zugriff verweigert". Suche im Archiv nach der Same Origin Policy von JavaScript.

    Macht der Browser vielleicht einen Unterschied bei manchen Javascript Befehlen ob sie aus einer "echten" HTML Datei stammen?

    Ja. Er macht jedoch nicht den geringsten Unterschied zwischen einer generierten und nicht-generierten HTML-_Ressource_ - zwischen diesen existiert nämlich gar keiner. Da Du aber mit einer Datei und einer Ressource arbeitest, streikt JavaScript aus Sicherheitsgründen.

    Cheatah

    --
    X-Will-Answer-Email: No
  6. Hi,

    Hallo,
    Ich möchte mit einem Perl PG den Quelltext für eine HTML Seite ausgeben. In diesem HTML Code ist es möglich ein Popup Fenster zu öffnen. Das geht alles wunderbar ABER wenn ich aus diesem Popup Fenster auf das Haupfenster mittels Opener zugreifen möchte tut sich garnichts. Und jetzt kommt der HAMMER wenn ich den HTML Code der vom Perl PG erzeugt wurde (im Browser) mir anzeigen lasse, diesen in eine HTML Datei Speichere und dann Starte funktioniert der Zugriff mit opener.

    Wie schon im alten Thread gesagt: der Browser weiß gar nicht, wie der Code auf dem Server generiert wird (ob er nur aus einer Datei ausgelesen wird und auf die Leitung geschickt wird oder ob ein CGI-Script das Teil erzeugt.

    Warum nur ist das so ???

    Rufst Du die abgespeicherte Datei über einen Webserver ab?
    Oder rufst Du die per file:... auf?

    Dann wäre es klar, es greift dann die same-origin-policy.
    Dein popup hat eine file:... URL. Wenn die Hauptseite vom CGI-Script erzeugt wurde, hat sie eine http:... URL, also einen anderen Ursprung, darf also nicht auf den opener zugreifen:

    print 'Fenster = window.open("file:///C|/testtttt/xxxx.htm", "Fenster", "width=500,height=340,scrollbars");';

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.