Twitter iPhone pliant OnePlus 12 PS5 Disney+ Orange Livebox Windows 11 ChatGPT

Pb de chargement de fichiers .js

5 réponses
Avatar
Nobody
Salut,

J'ai une page html qui fait référence à plusieurs fichiers .js.
Malheureusement, la fonction invoquée sur l'évènement onload (elle
s'appelle init) fait appel à des fonctions qui sont en partie situées
dans d'autres fichiers, qui ne sont apparemment pas forcément chargés
lorsque la fonction se déclenche.

Est-il possible de tester la disponibilité d'une fonction avant d'y
faire appel afin d'éviter une erreur js ?

Merci

5 réponses

Avatar

Salut,

J'ai une page html qui fait référence à plusieurs fichiers .js.
Malheureusement, la fonction invoquée sur l'évènement onload (elle
s'appelle init) fait appel à des fonctions qui sont en partie situées
dans d'autres fichiers, qui ne sont apparemment pas forcément chargés
lorsque la fonction se déclenche.

Est-il possible de tester la disponibilité d'une fonction avant d'y
faire appel afin d'éviter une erreur js ?


Ah ? Tiens ?
on utilise IE qui veut absolument résoudre
les bps avant d'avoir lu toute l'énoncée ?

1) tenter le coup en mettant init() dans un JS en fin de body

2) mettre un marqueur dans le js externe
comme par exemple en fin de fichier
vu=true;
et dans la page html
<body onload="if(!(vu)) ''; else if(vu) init();">

--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************

Avatar
YD

Salut,

J'ai une page html qui fait référence à plusieurs fichiers .js.
Malheureusement, la fonction invoquée sur l'évènement onload (elle
s'appelle init) fait appel à des fonctions qui sont en partie situées
dans d'autres fichiers, qui ne sont apparemment pas forcément chargés
lorsque la fonction se déclenche.

Est-il possible de tester la disponibilité d'une fonction avant d'y
faire appel afin d'éviter une erreur js ?


Oui. Si la fonction s'appelle mafonction, on peut tester :

if(window.mafonction)mafonction();
else ...

Le fait de tester mafonction comme une propriété de l'objet window (ce qu'est de toute façon une fonction définie globalement) évite un message d'erreur.

--
Y.D.

Avatar
Mokhet
Nobody wrote:

Est-il possible de tester la disponibilité d'une fonction avant d'y
faire appel afin d'éviter une erreur js ?


oui c'est possible
if (typeof ma_fonction === 'function') {

<script type="text/javascript">
var max_essai = 0;
function init() {
if (typeof mafunction === 'function') {
mafunction();
} else {
if (++max_essai>5) {
alert('chargement trop long, on abandonne');
} else {
alert('Essai ' + max_essai + ' échoué');
setTimeout('init()', 1000);
}
}
}
function mafunction() { alert('charge'); }
</script>

</head>
<body onload="init();">

Maintenant, remplacer la ligne 4 pour tester une autre fonction qui
aurait pas eu le temps de se charger

if (typeof autre_fonction === 'function') {

Laurent

Avatar
Nobody
Merci à tous.
Ces réponses devraient me sortir d'affaire.

@SM : pour le 1 : mon init est sur un window.onload donc a priori chargé
à la fin de la page. Pour le 2 : ca ne marche pas j'ai déjà essayé.
@Mokhet + @YD : la méthode par objet me semble plus intéressante,
puisque plus radicale (on teste l'existence et pas le type).


YD wrote:

Salut,

J'ai une page html qui fait référence à plusieurs fichiers .js.
Malheureusement, la fonction invoquée sur l'évènement onload (elle
s'appelle init) fait appel à des fonctions qui sont en partie situées
dans d'autres fichiers, qui ne sont apparemment pas forcément chargés
lorsque la fonction se déclenche.

Est-il possible de tester la disponibilité d'une fonction avant d'y
faire appel afin d'éviter une erreur js ?



Oui. Si la fonction s'appelle mafonction, on peut tester :

if(window.mafonction)mafonction();
else ...

Le fait de tester mafonction comme une propriété de l'objet window (ce
qu'est de toute façon une fonction définie globalement) évite un message
d'erreur.




Avatar

Merci à tous.
Ces réponses devraient me sortir d'affaire.

@SM : pour le 1 : mon init est sur un window.onload donc a priori


c'est exactement le genre d'à priori dont raffole IE pour merder ...

chargé
à la fin de la page. Pour le 2 : ca ne marche pas j'ai déjà essayé.
@Mokhet + @YD : la méthode par objet me semble plus intéressante,
puisque plus radicale (on teste l'existence et pas le type).


Ce semble bien plus propre en effet.

--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************