Javascript - insérer un .js sous conditions

Fermé
Jaina - 15 avril 2010 à 11:34
 Jaina - 15 avril 2010 à 15:08
Bonjour !

Je travaille actuellement sur une amélioration du plugin iSPIP de SPIP pour ceux qui connaissent.

Je rencontre un problème :

- Je souhaite insérer cette ligne de code
<script type="application/x-javascript" src="#CHEMIN{iui/iui.js}"></script>
dans mon <body> mais seulement si elle n'a pas déjà était inséré.

L'insertion de cette ligne dans mon <body> ne pose pas de problème mais si j'applique une condition avec du javascript, ça ne fonctionne pas. En gros, j'ai ceci :

<script type="text/javascript">
		var div = document.getElementById("js" )
		
		if (!div) { // Si ma ligne de code n'existe pas encore
			document.write('<div id="js"><script type="application/x-javascript" src="#CHEMIN{iui/iui.js}"></script></div>');
		}
	</script>


Ça me sort :
'); }
sur ma page, la condition fonctionne, mais le document.write est incorrect.
Est-ce que ma ligne de code est erronée ? Est-ce que c'est possible au moins ? :P

Merci d'avance de votre aide.
A voir également:

2 réponses

kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
15 avril 2010 à 11:54
Bonjour,

Le javascript étant éxécuté coté client uniquement (envoyé par le serveur), on voit donc que ce que tu écrit n'est pas possible.

Explication:
Ton serveur envoi l'ensemble de ton code javascript (celui qui inclut la condition pour appelé ton fichier js externe). Le client l'exécute et là... dans ton élément HTML DIV tu demande d'exécuter un script qui... n'existe pas du coté du client puisque non envoyé par le serveur (du moins je suppose)

Il faut donc trouver une alternative, mais pour l'instant c'est le temps du repas ;)
0
Héhé, je m'en doutais :P
Le problème est que, à cause de SPIP, je n'utilise pas de PHP.
Et après avoir tester la plupart des fonctions de SPIP, aucune ne répond à mon problème.

Je suis donc coincé avec le javascript, et je cherche désespérément une autre solution mais je n'en vois pas :P Si quelqu'un a une idée !

Merci.
0
kij_82 Messages postés 4089 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
15 avril 2010 à 14:23
La solution la plus simple dans un premier temps, serait d'encapsuler le code contenu dans ton fichier de script externe à l'intérieur d'une fonction.
Ensuite tu inclus ce fichier en début de page (ce sera donc toujours inclus), et tu fais appel à cette fonction uniquement si ta condition est validée.

Après, ce genre de façon n'est peut-être pas possible à cause du genre de traitement que fait ton script ?
0
Le problème de mon travail est que, dans la version d'iSPIP que j'ai repris, tous les liens css/js se font à la page principale. Hors, si après une recherche j'atterris sur une autre page (sans passer par la page principale) ==> BOOM, plus de css, plus de javascript. Il y a un problème de lien et si je m'amuse à insérer les css et js dans chaque page, ça me les duplique et je me retrouve avec n'importe quoi (menu plusieurs fois affichés, redirections bidons etc.).

C'est pour ça que je souhaite l'initialiser 1 seule fois.

Seulement je viens de m'apercevoir qu'à chaque nouvelle page, celle-ci est entièrement générée et donc mon test de div n'est pas bon et inutile.

Je recommence du début et te tiens au courant.

Merci quand même :P
0