Existenz einer Funktion prüfen
    
Martin Dunst
    
    
      
    
  - javascript
 nicht angemeldet
 nicht angemeldetHallo,
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
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
Hallo,
Der typeof-Operator sollte weiterhelfen.
Vielen Dank, das ist es.
lg
Martin Dunst
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...
Hallo,
Wie kann ich abfragen, ob die Funktion vorhanden ist?
if (window.foo) ... sollte funktionieren - wieso war das bei dir erfolglos?
Mathias