Unterscheidet Browser "generierten" HTML-Code von HTML Code?
Andre
- browser
0 uepselon0 Andre
0 Tobias K.0 Simon Reinhardt0 Robert Bamler0 Cheatah0 MudGuard
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() {';
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>
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
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
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
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
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.
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
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