Heidi: <body onload ... und window.onload

Hallo,
ich habe mit Eurer Hilfe ein Javascript geschrieben der Art

window.onload = init;
  function init()
  {
.....
  }

Dies funktionierte einwandfrei.
Jetzt habe ich aber bemerkt, dass in einigen wenigen Seiten, wo dieses Script aufgerufen wird, die Zeile
<body onload.....>
vorhanden ist und zwar zur Positionierung des Cursors auf ein bestimmtes Eingabefeld.
Auf diesen Seiten wird jetzt das Javascript ignoriert.
Wie kann ich erreichen, dass beides durchgeführt wird?
Danke
Heidi

NB. Hätte ich diesen Beitrag unter Javascript posten sollen?

  1. Jetzt habe ich aber bemerkt, dass in einigen wenigen Seiten, wo dieses Script aufgerufen wird, die Zeile
    <body onload.....>
    vorhanden ist und zwar zur Positionierung des Cursors auf ein bestimmtes Eingabefeld.
    Auf diesen Seiten wird jetzt das Javascript ignoriert.
    Wie kann ich erreichen, dass beides durchgeführt wird?

    In dem du beides Aufrufst, es geht nur entweder oder, besser ist window.onload

    NB. Hätte ich diesen Beitrag unter Javascript posten sollen?

    Ich denke ja.

    Struppi.

  2. Hello out there!

    Auf diesen Seiten wird jetzt das Javascript ignoriert.
    Wie kann ich erreichen, dass beides durchgeführt wird?

    Du müsstest dann bei "<body onload.....>" auch deine init-Funktion aufrufen:

    <body onload="init(); ...">

    Aber warum gibt es noch 'onclick'-Attribute im HTML, wo du doch HTML und JavaScript trennen willst?

    See ya up the road,
    Gunnar

    --
    „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
    1. Hallo,

      <body onload="init(); ...">

      das habe ich verstanden ...

      Aber warum gibt es noch 'onclick'-Attribute im HTML, wo du doch HTML und JavaScript trennen willst?

      ... dies aber nicht.
      In anderen Worten: Was will mir der Autor damit sagen?
      Schöne Grüße
      Heidi

      1. Hello out there!

        In anderen Worten: Was will mir der Autor damit sagen?

        Worauf ich hinauswollte: HTML und JavaScript zu trennen, also gar keinen Eventhandler im HTML-Code zu haben.

        Dein JavaScript, das auf allen Seiten der Site bei 'window.onload' ausgeführt werden soll, sähe so aus:

        init.js:

        window.onload = init;  
          
        function init()  
        {  
         alert("init");  
        }
        

        Soll nun bei einer Seite außer init() noch anderes JavaScript ausgeführt werden, kannst du diesen Code in eine weitere separate JavaScript-Ressource tun:

        foo.js:

        window.onload = foo;  
          
        function foo()  
        {  
         init();  
         alert("foo");  
        }
        

        Die Funktion 'foo()' ruft 'init()' (aus 'init.js') auf und enthält den zusätzlichen Code.

        Die erste Zeile überschreibt 'window.onload' aus dem 'init.js'-Script. Dazu ist es wichtig, dass 'foo.js' _nach_ 'init.js' eingebunden wird:

        foo.html:

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
        <html xmlns="http://www.w3.org/1999/xhtml">  
         <head>  
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
          <title>foo</title>  
          <script type="text/javascript" src="init.js"></script>  
          <script type="text/javascript" src="foo.js"></script>  
         </head>  
         <body>  
         </body>  
        </html>
        

        Für eine andere Seite mit anderem zusätzlichem Code erstellt du eine weitere separate JavaScript-Ressource:

        bar.js:

        window.onload = bar;  
          
        function bar()  
        {  
         init();  
         alert("bar");  
        }
        

        und bindest diese statt 'foo.js' ein:

        bar.html:

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
        <html xmlns="http://www.w3.org/1999/xhtml">  
         <head>  
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
          <title>bar</title>  
          <script type="text/javascript" src="init.js"></script>  
          <script type="text/javascript" src="bar.js"></script>  
         </head>  
         <body>  
         </body>  
        </html>
        

        * * *

        Eine andere Möglichkeit ist es, alles in einem JavaScript zu haben und die Ausführung von Codeteilen abhängig zu machen z.B. von der Klasse des 'body':

        init.js:

        window.onload = init;  
          
        function init()  
        {  
         alert("init");  
          
         if (document.body.className == "foo") foo();  
         if (document.body.className == "bar") bar();  
        }  
          
        function foo()  
        {  
         alert("foo");  
        }  
          
        function bar()  
        {  
         alert("bar");  
        }
        

        foo.html:

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
        <html xmlns="http://www.w3.org/1999/xhtml">  
         <head>  
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
          <title>foo</title>  
          <script type="text/javascript" src="init.js"></script>  
         </head>  
         <body class="foo">  
         </body>  
        </html>
        

        bar.html:

        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
        <html xmlns="http://www.w3.org/1999/xhtml">  
         <head>  
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
          <title>bar</title>  
          <script type="text/javascript" src="init.js"></script>  
         </head>  
         <body class="bar">  
         </body>  
        </html>
        

        See ya up the road,
        Gunnar

        --
        „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)
        1. Hallo Gunnar,
          danke für die ausführliche Hilfe.
          Werde sie mir hoffentlich heute noch zu Gemüte führen.
          Ich nehme an, damit ich damit zurechtkommen werde.
          Sei bitte trotzdem so nett und werfe in den nächsten Tagen einen Blick auf den thread, falls ich doch noch eine Frage habe (der thread rückt ja doch immer weiter nach unten).
          Gruß
          Heidi

        2. Hallo Gunnar,
          es hat wunderbar funktioniert.
          Danke, ich werde Dich in mein Abendgebet einschließen.
          Gruß
          Heidi

    2. Hallo Gunnar,

      Aber warum gibt es noch 'onclick'-Attribute im HTML, wo du doch HTML und JavaScript trennen willst?

      Wo hast Du ein onclick gesehen?
      Gruß
      Heidi

      1. Hello out there!

        Wo hast Du ein onclick gesehen?

        Nirgens. Ich meinte das 'onload' im 'body'-Tag.

        See ya up the road,
        Gunnar

        --
        „Und [dieses Forum] soll […] auch ein Fachforum bleiben und kein Psychologieforum werden.“ (Kirsten Evers)