Peter Picard: Skript funzt nur, solange Adobe GoLive im Hintergrund läuft...

Hallo zusammen!

Ich habe mir ein Galerie-Skript zusammengeschreibselt, das sich an den Dateinamen der anzuzeigenden Bilder orientiert (also 001.jpg, 002.jpg, usw.), und so für jedes Bild eine HTML-Seite generieren soll, die neben dem Bild noch einen Link für weiter, bzw. zurück enthält.

Das ganze funktioniert im Internet Explorer auch ganz prima, sowohl online, wie auch offline, solange Adobe Golive 5.0, das ich zum hochladen benutze, im Hintergrund läuft. Aber sobald ich Golive schliesse öffnet sich bei Aufruf der Funktion "gehezu(Nummer)" nur noch ein leeres Fenster.

Hat jemand ne Idee, wo hier der Haken stecken könnte?

Viele Grüße,

Peter

Skript wie folgt:

function gehezu(Nummer)
{
  wnd = open("","Reparatur_D","width=screen.width,height=screen.height,toolbar=0,location=0,directories=0,status=no,menubar=0,scrollbars=yes,resizable=yes,dependent")
  with(wnd)
  {
  document.open("Text/html");
  document.writeln("<html><head>");
  document.writeln("<title>Reparaturhandbuch D-Modelle</title>");
  document.writeln("<link rel='stylesheet' href='../../../newfrenchstyle.css'>");
  document.writeln("</head>");
  document.writeln("<SCRIPT LANGUAGE='JavaScript' src='../../../../scripts/reparatur_d.js' TYPE='text/javascript'></SCRIPT>");

document.writeln("<body background='../../../menu/background.jpg' leftmargin=0 marginwidth=0 topmargin=0 marginheight=0 alink='#ffffcc' vlink='#ff9900' link='#ffcc00'>");
  document.writeln("<div align='left'><table border='0' cellpadding='0' cellspacing='0'>");
  document.writeln("<tr height='25'><td width='250' height='25'><div align='left'>");
  document.writeln("<p><a href='javascript:zurueck(");
   document.write (Nummer);
   document.write (")'>zurück</a></p>");
  document.writeln('</div></td><td width="250" height="25"><div align="center">');
  document.writeln("<p><a href='javascript:self.close()'>Inhalt</a></p>");
  document.writeln('</div></td><td width="250" height="25"><div align="right">');
  document.writeln("<p><a href='javascript:weiter(");
   document.write (Nummer);
   document.write (")'>weiter</a></p>");
  document.writeln('</div></td><td height="25"><div align="right"><p></p></div></td></tr><tr height="25">');
  document.writeln('<td colspan="3" height="25"><div align="center">');
  document.writeln("<p>Seite ");
   document.write (Nummer-3);
   document.write ("</p>");
  document.writeln('</div></td><td height="25"></td></tr><tr><td colspan="4"><div align="center">');
  if (Nummer < 10)
  {
   document.writeln('<img src="00');
   document.write (Nummer)
   document.write ('.jpg" border="0"></div>');
  }
  else
  {
   if (Nummer < 100)
   {
    document.writeln('<img src="0');
    document.write (Nummer);
    document.write ('.jpg" border="0"></div>');
   }
   else
   {
    document.writeln('<img src="');
    document.write (Nummer);
    document.write ('.jpg" border="0"></div>');
   }
  }
  document.writeln('</td></tr></table></div>');
  document.writeln('</body></html>');
  document.close
  }
}

function zurueck(Nummer)
{
Nummer = Nummer - 1;
if (Nummer > 3)
{
document.open("Text/html");
  document.writeln('<html><head>');
  document.writeln('<title>Reparaturhandbuch D-Modelle</title>');
  document.writeln('<link rel="stylesheet" href="../../../newfrenchstyle.css">');
  document.writeln('</head>');
  document.writeln("<SCRIPT LANGUAGE='JavaScript' src='../../../../scripts/reparatur_d.js' TYPE='text/javascript'></SCRIPT>");

document.writeln('<body background="../../../menu/background.jpg" leftmargin=0 marginwidth=0 topmargin=0 marginheight=0 alink="#ffffcc" vlink="#ff9900" link="#ffcc00">');
  document.writeln('<div align="left"><table border="0" cellpadding="0" cellspacing="0">');
  document.writeln('<tr height="25"><td width="250" height="25"><div align="left">');
  document.writeln("<p><a href='javascript:zurueck(" + Nummer + ")'>zurück</a></p>");
  document.writeln('</div></td><td width="250" height="25"><div align="center">');
  document.writeln("<p><a href='javascript:self.close()'>Inhalt</a></p>");
  document.writeln('</div></td><td width="250" height="25"><div align="right">');
  document.writeln("<p><a href='javascript:weiter(" + Nummer + ")'>weiter</a></p>");
  document.writeln('</div></td><td height="25"><div align="right"><p></p></div></td></tr><tr height="25">');
  document.writeln('<td colspan="3" height="25"><div align="center">');
  document.writeln("<p>Seite " + (Nummer-3) + "</p>");
  document.writeln('</div></td><td height="25"></td></tr><tr><td colspan="4"><div align="center">');
  if (Nummer < 10)
  {
   document.writeln('<img src="00' + Nummer + '.jpg" border="0"></div>');
  }
  else
  {
   if (Nummer < 100)
   {
    document.writeln('<img src="0' + Nummer + '.jpg" border="0"></div>');
   }
   else
   {
   document.writeln('<img src="' + Nummer + '.jpg" border="0"></div>');
   }
  }
  document.writeln('</td></tr></table></div>');
  document.writeln('</body></html>');
document.close
}
}

function weiter(Nummer)
funktioniert wie die Funktion zurueck, nur dass eben am Anfang
Nummer = Nummer + 1;
steht...

  1. Das ganze funktioniert im Internet Explorer auch ganz prima, sowohl online, wie auch offline, solange Adobe Golive 5.0, das ich zum hochladen benutze, im Hintergrund läuft. Aber sobald ich Golive schliesse öffnet sich bei Aufruf der Funktion "gehezu(Nummer)" nur noch ein leeres Fenster.

    Hat jemand ne Idee, wo hier der Haken stecken könnte?

    Keine Ahnung was da ssein könnte, aber das Skript ist sehr gruselig.

    1.) document.writeln führt unter einiege Netscape Versionen zu Abstürzen, besser documnet.write() verwenden.

    2.) ist es besser und schneller, die HTML Ausgeb in einer Variabeln zu sammeln und dann komplett auszugeben.

    3.) Du hast offensichtlich zweimal genau den gleichen Code. Dafür solltest du eine Funktion schreiben.

    Skript wie folgt:

    function gehezu(Nummer)

    Hier würde ich statt drei Funktionen zu verwenden noch einen Zähler einbauen:

    function gehezu(Nummer, add)
    {

    if(add) Nummer += add;
    if (Nummer < 0 ) Nummer = 0;
    if(Nummer > max) Nummer = max;

    Und dann statt zurueck() gehezu(Nummer, -1)

    {
      wnd = open("","Reparatur_D","width=screen.width,height=screen.height,toolbar=0,location=0,directories=0,status=no,menubar=0,scrollbars=yes,resizable=yes,dependent")

    wnd = open("", "Reparatur_D", "width=" + screen.width + ",height=" + screen.height + "....")

    Wobei ich nicht hoffe, das du das im Internet benutzt, weil damit das Fenster irgendwo hängt und vermutlich nicht ganz auf dem Monitor zu sehen sein wird.

    with(wnd)

    Naja, wenn schon denn schon:
    with(wnd.document)
    {
       open('text/html');
       write(ausgabe);
       close();
    }

    und ausgabe ist dann sowas:

    var ausgabe = getHTML(Nummer);

    function getHTML(Nummer)
    {
         var dateinr = '000' + Nummer;
         dateinr = dateinr.substring(dateinr.length -3);

    return "<html><head>"

    • "<title>Reparaturhandbuch D-Modelle</title>
    • "<link rel='stylesheet' href='../../../newfrenchstyle.css'>"
    • "</head>"
    • "<SCRIPT LANGUAGE='JavaScript' src='../../../../scripts/reparatur_d.js' TYPE='text/javascript'></SCRIPT>"
    • "<body background='../../../menu/background.jpg' leftmargin=0 marginwidth=0 topmargin=0 marginheight=0 alink='#ffffcc' vlink='#ff9900' link='#ffcc00'>
    • "<div align='left'><table border='0' cellpadding='0' cellspacing='0'>"
    • "<tr height='25'><td width='250' height='25'><div align='left'>
    • "<p><a href='javascript:zurueck(" + Nummer + ")'>zurück</a></p>"
    • '</div></td><td width="250" height="25"><div align="center">'
    • "<p><a href='javascript:self.close()'>Inhalt</a></p>
    • '</div></td><td width="250" height="25"><div align="right">'
    • "<p><a href='javascript:weiter(" + Nummer + ")'>weiter</a></p>"
    • '</div></td><td height="25"><div align="right"><p></p></div></td></tr><tr height="25">'
      +'<td colspan="3" height="25"><div align="center">'
    • "<p>Seite " + (Nummer-3) + "</p>"
    • '</div></td><td height="25"></td></tr><tr><td colspan="4"><div align="center">'
    • '<img src="' + dateinr + '.jpg" border="0"></div>');
      }