<script></script> in <script></script>
saru
- javascript
0 Antje Hofmann0 saru0 Antje Hofmann0 saru0 Antje Hofmann0 saru
Guckt Euch doch mal bitte diesen Code an:
<script language="Javascript"><!--
function pop(URL)
{
Img1 = new Image()
Img1.src=URL;
var s1 = "<HTML>" +
"<HEAD>" +
"<TITLE>Detailansicht</TITLE>" +
"<script> +
"function shrinktofit () {" +
"document.domain = setDomain();" +
"var image = document.images.FullImage;" +
"window.resizeTo(image.width,image.height);" +
"if(document.body && document.body.clientWidth)" +
"window.resizeBy(" +
"image.width - document.body.clientWidth," +
"image.height - document.body.clientHeight" +
" )" +
"}" +
"</script>" +
"</HEAD>" +
"<body MARGINHEIGHT='0' MARGINWIDTH='0' topmargin='0' rightmargin='0' leftmargin='0' bgcolor='#FFCF00'>" +
"<img name='FullImage' border='0' onLoad='shrinktofit()' src='" +URL +
"'>"+
"</body>"+
"</HTML>"
popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,width=10, height=10")
popup.document.write(s1)
popup.document.close()
};
// -->
</script>
Dazu habe ich 2 Fragen. Das Script funktioniert gut in InternetExplorer, aber In
Netscape wird das Dokument folgendermaßen ab Line 20 bei "</script>" + dargestellt:
"}" +
"</XMP><PRE><B><<FONT SIZE=+0 COLOR="#551A8B">/script</FONT>></B>" +
usw, usw.
Kann ich innerhalb eines <script></script>-Tags nicht noch ein </script> einfügen?
Ich habe es doch in Anführungszeichen gesetzt. Daran wird es doch sicherlich
liegen oder? So kann das Script in Netscape natürlich nicht funktionieren.
Außerdem möchte ich das Popup-Fenster 10px in der Höhe größer machen. Aber
wenn ich "window.resizeTo(image.width,image.height+10);" + eingeben passiert
gar nichts.
Für eine Antwort wäre ich überaus dankbar, denn ich bin am Ende
Gruss
saru
Hallo Saru
Dazu habe ich 2 Fragen. Das Script funktioniert gut in InternetExplorer, aber In
Netscape wird das Dokument folgendermaßen ab Line 20 bei "</script>" + dargestellt:
siehe http://selfhtml.teamone.de/javascript/objekte/document.htm#write
das sollte helfen
Viele Grüße
Antje
Hallo Saru
Dazu habe ich 2 Fragen. Das Script funktioniert gut in InternetExplorer, aber In
Netscape wird das Dokument folgendermaßen ab Line 20 bei "</script>" + dargestellt:
siehe http://selfhtml.teamone.de/javascript/objekte/document.htm#write
das sollte helfen
Danke..jetzt habe ich das script zu: "</script>" +
geändert, aber jetzt funktioniert gar nichts mehr.
Noch irgendeine Idee???
Hallo Saru
siehe http://selfhtml.teamone.de/javascript/objekte/document.htm#write
das sollte helfen
Danke..jetzt habe ich das script zu: "</script>" +
geändert, aber jetzt funktioniert gar nichts mehr.
Ja, eine URL auf der man sich das anschauen kann.
Gruß
Antje
Ja, eine URL auf der man sich das anschauen kann.
So...ich hatte ein " vergessen...jetzt funzt das Problem mit dem </scipt>, aber
das ganze funktioniert in Netscape immer noch nicht.
Hier die URL:
http://www.willy-behrend.de/testpage_neuversuch.html
Danke für Deine Hilfe
Gruss saru
Hallo Saru
das ganze funktioniert in Netscape immer noch nicht.
Hier die URL:
http://www.willy-behrend.de/testpage_neuversuch.html
Netscape 4 interpretiert aus irgendeinen Grund den Eventhandler onload nicht mehr, wenn ein <script></script> auftaucht.
Ich habe deshalb einfach mal ein wenig umgeschrieben:
function pop(URL)
{
Img1 = new Image()
Img1.src=URL;
var s1 = "<HTML>" +
"<HEAD>" +
"<TITLE>Detailansicht</TITLE>" +
"</HEAD>" +
'<body MARGINHEIGHT="0" MARGINWIDTH="0" topmargin="0" rightmargin="0" leftmargin="0" bgcolor="#FFCF00">' +
"<img name='FullImage' border='0' onLoad='if (opener) opener.changeBild(this)' src='" +URL +
"'>"+
"</body>"+
"</HTML>"
popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,resizable=yes,width=130,height=130")
popup.document.write(s1)
popup.document.close()
};
function changeBild(bild)
{
if (bild.width>0)
popup.resizeTo(bild.width,bild.height)
else popup.resizeTo(200,200)
}
Wichtig sind auch die Änderungen in der Zeile
popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,resizable=yes,width=130,height=130")
Im Extremfall kannst du für die Angabe width=10,height=10 eine Meldung Zugriff verweigert kriegen, da die Fenstergrößen mindestens 100 x 100 sein muß.
resizable=yes damit NN 4 die Größenänderung auch ausführt und das entfernen der Leerzeichen im Parameterstring.
Viele Grüße
Antje
PS: Die Angabe der URL erleichtert insbesondere deshalb die Arbeit, weil man mit <base href="URL"> sofort alle relevanten Dateien hat.
Ich danke Dir vielmals.
Du hast mir sehr geholfen.
Noch etwas:
Kann ich hier:
function changeBild(bild)
{
if (bild.width>0)
popup.resizeTo(bild.width,bild.height)
else popup.resizeTo(200,200)
die höhe insofern änders, als das zum bild.height noch 20px angehängt werden?
Gruss Saru
und nochmals vielen Dank für die schnelle Hilfe
Hallo Saru
function changeBild(bild)
{
if (bild.width>0)
popup.resizeTo(bild.width+20,bild.height+20)
else popup.resizeTo(200,200)
}
die höhe insofern änders, als das zum bild.height noch 20px angehängt werden?
geht eigentlich problemlos.
Alternativ kannst du auch:
popup.resizeTo(parseInt(bild.width)+20,parseInt(bild.height)+20)
versuchen.
Gruß
Antje
Hallo Antje...
...Du bist ein Schatz :-)
Jetzt werde ich auch nicht mehr nerven.
wow...jetzt bin ich erleichtert.
gruss
saru
ups...zu früh gefreut.
In IE funktioniert alles toll, in Netscape auch, allerdings nur für ein paar Sekunden,
denn dann läd die Ursprungsseite (also die in der das Script steht) in das
Fenster hinein. Warum?
Hier nochmal der Code:
function pop(URL)
{
Img1 = new Image()
Img1.src=URL;
var s1 = "<HTML>" +
"<HEAD>" +
"<TITLE>Detailansicht</TITLE>" +
"</HEAD>" +
'<body MARGINHEIGHT="0" MARGINWIDTH="0" topmargin="0" rightmargin="0" leftmargin="0" bgcolor="#FFCF00">' +
"<img name='FullImage' border='0' onLoad='if (opener) opener.changeBild(this)' src='" +URL +
"'>"+
"</body>"+
"</HTML>"
popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,resizable=yes,width=130,height=130")
popup.document.write(s1)
popup.document.close()
};
function changeBild(bild)
{
if (bild.width>0)
popup.resizeTo(parseInt(bild.width)+0,parseInt(bild.height)+100)
else popup.resizeTo(200,200)
}
Hallo Saru
In IE funktioniert alles toll, in Netscape auch, allerdings nur für ein paar Sekunden,
denn dann läd die Ursprungsseite (also die in der das Script steht) in das
Fenster hinein. Warum?
konnte ich eben auf http://www.willy-behrend.de/testpage_neuversuch.html
mit dem NN 4.5 nicht nachvollziehen. Welche Browserversion verwendest du denn?
Viele Grüße
Antje
Hallo Saru
In IE funktioniert alles toll, in Netscape auch, allerdings nur für ein paar Sekunden,
denn dann läd die Ursprungsseite (also die in der das Script steht) in das
Fenster hinein. Warum?
konnte ich eben auf http://www.willy-behrend.de/testpage_neuversuch.html
mit dem NN 4.5 nicht nachvollziehen. Welche Browserversion verwendest du denn?
Viele Grüße
Antje
Netscape Communicator 4.7
Das Fenster öffnet sich in der richtigen Größe und bleibt für einige Sekunden
auch stehen. Aber dann läd die Seite neu und die ursprungsseite ist zu
sehen. Leider kann ich den Quellcode des Popupfensters nicht sehen, da
alles viel zu schnell geht, als das ich den Quellcode schnell öffnen könnte.
Hallo Saru
In IE funktioniert alles toll, in Netscape auch, allerdings nur für ein paar Sekunden,
denn dann läd die Ursprungsseite (also die in der das Script steht) in das
Fenster hinein. Warum?
Also beobachten konnte ich nach dem Resize-Vorgang, dass das Fenster neu geladen wird. Sieht ganz nach einem Bug aus. Verwende mal statt resizeTo resizeBy, da sieht man es ganz deutlich.
JS-technisch wird es da kaum Abhilfe geben, außer du änderst den Ansatz.
Übergib die Bildgrößen als Parameter an die Funktion und öffne das Fenster gleich in der richtigen Größe. Natürlich hängt da eine ganze Menge noch dran aber da könnte dir dies weiterhelfen http://selfhtml.org/sfausles/tsfa_tcd.htm#a5
Viele Grüße
Antje
mein erstes Script war:
function pop(URL)
{
Img1 = new Image()
Img1.src=URL;
var s1 = "<TITLE>Detailansicht</TITLE>" +
"<BODY topmargin='0' leftmargin='0'>" +
"<img src='" +URL +
"'>"
var s2 = "<FORM><INPUT TYPE='BUTTON' VALUE='Okay'" +
"onClick='self.close()'>" +
"</BODY>"
popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,width="+Img1.width+",height="+Img1.height)
popup.document.write(s1+s2)
popup.document.close()
};
ABer auch hier gab es Probleme. Wieder mal alles gut im IE, aber in
Netscape geht ein Popup in der Größe des Bildschirms auf. Also wiedermal
falsch...ist da was flasch?
Wenn nicht, dann....
nun, dann muß ich es halt ohne die +100px in der Höhe machen, da hat es
ja funktioniert. Leider gibt es dann auch kein "Fenster schließen" Knopf, der
eigendlich sein sollte.
NOchmals danke für Deine Hilfe.
Hallo,
.. Img1 = new Image()
.. Img1.src=URL;
.. popup = window.open("","Bild","status=no,toolbar=no,scrollbars=no,width="+Img1.width+",height="+Img1.height)
.. Netscape geht ein Popup in der Größe des Bildschirms auf. Also wiedermal
eine Möglichkeit wäre dass N4 nicht weiss wie gross Img1 ist wenn die Seite
noch nicht existiert.
Ich wüsste aber gerne was an der vorherigen Lösung das Problem war, mit
N4.77 scheint's richtig, das Popupfenster kommt in Bildgrösse und wird dann
höher, gelber(?) Rand unter Bild, und so steht es auch in den Scripten?
Hattest Du was anderes im Popup erhalten?
Grüsse
Cyx23
Ich wüsste aber gerne was an der vorherigen Lösung das Problem war, mit
N4.77 scheint's richtig, das Popupfenster kommt in Bildgrösse und wird dann
höher, gelber(?) Rand unter Bild, und so steht es auch in den Scripten?
Hattest Du was anderes im Popup erhalten?
Grüsse
Cyx23
ja, so sollte es auch sein, aber in Netscape Communicator 4.7 bleibt dieses
Fenster nur wenige Sekunden stehen und läd dann neu und zwar eine andere SEite
nämlich die, auf der das Popupscript steht. Die Fenstergröße bleibt so
bestehen, nur eben der Content nicht. In Netscape 6 (aber da gibt es ja
nur bugs), zeigt er das fenster einmal richtig an, aber wenn man es schließt und
nochmals öffnet, zeigt er das popup nur in etwa 200x200 px.
gruss sacha
ich weiß auch nicht mehr weiter.
Hallo,
ja, so sollte es auch sein, aber in Netscape Communicator 4.7 bleibt dieses
Fenster nur wenige Sekunden stehen und läd dann neu und zwar eine andere SEite
nämlich die, auf der das Popupscript steht. Die Fenstergröße bleibt so
bei mir mit 4.77 scheint alles ok, vielleicht kannst du mal durchchecken
wo's hängt, z.B. onLoad='alert(opener)' o.ä., usw.
bestehen, nur eben der Content nicht. In Netscape 6 (aber da gibt es ja
nur bugs), zeigt er das fenster einmal richtig an, aber wenn man es schließt und
nochmals öffnet, zeigt er das popup nur in etwa 200x200 px.
wenn Du es sowieso besser umstrickst wegen n4 und gleich mit der richtigen
Grösse aufmachst hast Du das Problem N6 auch nicht.
Wenn Du die Bildgrösse abfragen wolltest musst Du erst ein Fenster
mit dem Bild aufmachen, dann die Bildgrösse abfragen, dann Variable
mit Bildgrösse, dann Fenster(ggf. erst zu) ganz neu mit Variable + 100px
bei Höhe) aufmachen.
Die Alternative wären wohl Variablen/Array mit Fenstergrössen.
ich weiß auch nicht mehr weiter.
sowas kann halt etwas dauern bis es klappt.
Grüsse
Cyx23
sowas kann halt etwas dauern bis es klappt.
Das ganze liegt nur an einer Zeite (wie so häufig).
So klappts:
popup.resizeTo(bild.width,bild.height)
So nicht:
popup.resizeTo(parseInt(bild.width)+0,parseInt(bild.height)+100)
Die 100 Pixel sind allerdings wichtig, damit ich in das Script noch einen
button integrieren kann, der das Pop schließt.
Gruss Saru
Das ganze liegt nur an einer Zeite (wie so häufig)
Nein, doppeltes Posten ist nicht so häufig!!
Also wer Probleme hat, in einem Script mit <script></script> zu hantieren, sollte einfach in den body schreiben
<input type="hidden" name="script" value="<script>Inhalt</script>">
Beachten, dass doppelte Anführungszeichen nicht mehr möglich sind!
z.B. onClick='dudies, dujenes('')'
würde dann aus selbigen Problem nicht mehr funktionieren!
P.S. Vielleicht sollte man Microsoft, Netscape & Co mal sagen, der Browser sollte den HTML - Quelltext nicht interpretieren, sondern sich logisch durchlesen! *g*
By
AB