Martin Dunst: Existenz einer Funktion prüfen

Hallo,

Ich will in Javascript per <body onload="[...]"> die Existenz der Javascriptfunktion "foo" überprüfen und diese, sofern sie existiert, rufen.

Da es sich um eine Intranetanwendung handelt, reicht es, wenn die Überprüfung in Internet Explorer ab Version 6 sowie in Firefox ab Version 2.0 funktioniert.
In dieser (sehr umfangreichen) Intranetanwendung hat jedes body-Element ein onload-Attribut, dem ich auf der Serverseite einen Inhalt geben kann - konkret kann ich serverseitig einen String definieren, der als Inhalt in das onload-Attribut des body-Tags kopiert wird.

Folgendes habe ich (erfolglos) versucht:

  
<body onload="if(foo) foo();">  
<body onload="if(foo) { foo(); }">  
<body onload="if(window.foo) window.foo();">  
<body onload="if(window.foo) { window.foo(); }">  

Ist die Funktion vorhanden, dann wird sie auch gerufen.
Ist sie jedoch nicht vorhanden, so erscheint ein Javascriptfehler (Sinngemäß: "foo ist nicht definiert")

Wie kann ich abfragen, ob die Funktion vorhanden ist?

lg
Martin Dunst

--
Do what I say, not what I do.
--Tim Berners-Lee
  1. hi,

    Wie kann ich abfragen, ob die Funktion vorhanden ist?

    Der typeof-Operator sollte weiterhelfen.

    typeof eines nicht existenten Objekts wäre "undefined".
    In deinem Falle solltest du aber explizit darauf prüfen, ob er "function" ist.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      Der typeof-Operator sollte weiterhelfen.

      Vielen Dank, das ist es.

      lg
      Martin Dunst

      --
      Do what I say, not what I do.
      --Tim Berners-Lee
  2. Wie kann ich abfragen, ob die Funktion vorhanden ist?

    Vielleicht so:

    <html>
      <head>
        <title>Test</title>
        <script type="text/javascript">
          function foo()
          {
            //...
          }

    if (this.foo)
            document.write("foo ist vorhanden. ")
          else
            document.write("foo ist nicht vorhanden. ")
          if (this.bar)
            document.write("bar ist vorhanden. ")
          else
            document.write("bar ist nicht vorhanden. ")
        </script>
      </head>
      <body>
      </body>
    </html>

    Was besseres fällt mir jetzt auch nicht ein...

  3. Hallo,

    Wie kann ich abfragen, ob die Funktion vorhanden ist?

    if (window.foo) ... sollte funktionieren - wieso war das bei dir erfolglos?

    Mathias