OVH Cloud OVH Cloud

tester la définition d'une fonction

13 réponses
Avatar
Florian Sinatra
Bonsoir,
j'aimerais savoir s'il est possible en JS de tester si une fonction est
déjà définie (l'équivalent de function_exists() en PHP). J'ai beaucoup
de peine à trouver des sites consistants en matière de JS (tutos ou
référence) à part le Mozilla Developer Center.

Sinon, y a-t-il un moyen pour ajouter une fonction à window.onload ?
Par exemple soit :
window.onload = function(){ foo(); }

puis plus loin j'aimerais ajouter bar(); normalement je ferais :
window.onload = function(){ foo(); bar(); }

mais si je ne connais pas la présence dans window.onload de foo() tout
en voulant la préserver ?

D'avance merci.

3 réponses

1 2
Avatar
ASM
O.L. a émis l'idée suivante :


...

C'est bon j'ai (re)trouvé la bonne option de config pour les citations
!! :)
Désolé pour tous ces désagréments ^^ ;)


En tous cas pour l'égo ça doit être cool :-)


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
O.L.
ASM a exposé le 16/08/2006 :
O.L. a émis l'idée suivante :


...

C'est bon j'ai (re)trouvé la bonne option de config pour les citations !!
:)
Désolé pour tous ces désagréments ^^ ;)


En tous cas pour l'égo ça doit être cool :-)


:D

Eh oui, à en croire mon logiciel de news je suis le seul à parler ...
Peut être qu'il n'avait "vu" que les messages intelligents :p
** je plaisante **

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net


Avatar
BertrandB


elles sont forcément définies une fois la page chargé.
(tout a été lu et mis en mémoire par le navigateur)

ni celles qui restent peut-être à venir.


Je doute qu'on puisse introduire une fonction (son script) depuis le
serveur après le chargement de la page.
Donc les fonctions sont là ou pas, pas de 1/2 mesure.



Sisi c'est possible :
Extrait de chtingify de mon chtioblogue (fonction _myimport)

/* Les fichers a inclure seront des js dans lesquels sera defini
l'objet
si l'objet a pour nom machin le js devra s'apeler machin.js
la fonction myimport est appelee avec l'uri du fichier a
inclure et une fonction
callback a laquele on passera l'objet */
function myimport(src,cb) {
function _clean(){
if(eval(nomobj)) {
var include=document.getElementById("include_"+nomobj);
include.parentNode.removeChild(include);
cb(eval(nomobj));
} else setTimeout(_clean,500);
}
function _myimport(){
var include=document.createElement("script");
include.type="text/javascript";
include.src=src;
include.id="include_"+nomobj;
include.onreadystatechange=_clean;
document.getElementsByTagName("head")[0].appendChild(include);
setTimeout(_clean,500);
}
nomobj=src.replace(/^.*//,"").replace(/.js$/,"");
setTimeout(_myimport,1); //permet le detachement du chargement dans
un "thread"
}

Euh puisque "eval is devil" kelke critques sur ce morceau ?


1 2