OVH Cloud OVH Cloud

javascript et dépendances

14 réponses
Avatar
unbewusst.sein
supposons que dans chacun de mes fichiers de script js, j'ai une
variable, ou autre function, déclarant de quel autre script celui-ci
dépend, du genre :

var depend=['location','cookie'];

ou plutôt, afin que ça marche, qqsoit les scripts dans <head /> :

depend.concat('location','cookies');

ensuite j'aurais une routine qui, à partir de depend, "calculerait" les
fichiers effectifs nécessaires, supposons que le résultat serait une
Array() du genre :

needed=['/index_js/styles.js','/index_js/location.js',/index_js/cookies.
js'];

suffirait-il alors d'écrire dans le document par :

document.write("<script src='/index_js/styles.js'...");
pour chaque fichier nécessaire et il ne me resterait plus qu'à gérer
l'init de la page ???
--
Artaban de Médée

4 réponses

1 2
Avatar
Laurent vilday
var
listener = is_ie ? "onreadystatechange" : "onload",
script = document.createElement("script");

script[listener] = function()
{


Ha! oui ! astucieux, mais avec quel IE et-ce sensé fonctionner ?


Ca passe sur mon IE6 et IE7 (sur l'élément <script>). Mais comme je
disais c'est pas testé à fond (pas le temps et pas les machines
nécessaires pour tester toutes les possibilités de
plateforme/navigateur), d'un autre côté, sortir le IE Mac c'est méchant.
Il n'est plus à prouver que IE Mac ne sert qu'à faire des démos de
choses qui ne marchent pas :D.

j'ai tenté :

popup = window.open('test.html');
popup[listener] = function() { alert('vu'); }

Mon IE (Mac) reste muet ...


Passe pas non plus sur IE6, mais bon, je suis pas certain que ça puisse
faire qqchose. A mon avis c'est test.html qui est capable de définir
l'event "onload", mais depuis un window.open() j'ai des doutes que ça
marche partout, entre les restrictions des navigateurs, les nouvelles
restrictions IE7 qui pointent leur nez tous les jours, les popup
blockers qui manipulent à leur guise les window.open(), etc.
A mon avis, on peut rien faire d'un window.open, c'est laid, lent et pas
"reliable" imo.

--
laurent


Avatar
Laurent vilday
Laurent vilday wrote:

// certains prétendent que c'est "application/javascript"


j'ai tjs mis text, rien n'a râlé pour l'instant )))


En tous cas avec la nouvelle norme-mode mon IE connaît pas et zappe le JS.
FF 2 la connait.


Pareil, mais bon, c'est une histoire de content type qui était pas
normalisé alors tout le monde a fait comme il voulait, "text/javascript"
était devenu la norme de facto. Puis des bonnes ames ont décidé qu'il
fallait normalisé, très bien, mais que le "text/javascript" c'était mal,
pfff. Donc, à priori, "text/javascript" est déprécié, mais on ne peut
pas demandé à IE de comprendre un truc mis en place en avril 2006.

http://tools.ietf.org/html/rfc4329

Pour tout dire, je sais pas trop où on va avec ça, si on en a encore
pour au bas mot 2 ou 3 ans de IE6, j'espère franchement pas plus :( , je
me demande bien comment ça va se passer avec certains navs qui voudront
"text" et d'autres "application". Je me vois mal écrire :

<script type="text/javascript" type="application/javascript">

On verra bien, c'est tellement fun toutes ces spécifités à gérer, on a
tellement que ça à faire :D

PS : au fait Laurent, avec quoi ponds-tu ce beau code ?
(sa documentation en en-tete)


Lol, avec mes doigts :) copié/collé depuis mes librairies et j'adapte un
peu pour le newsgroup pour éviter les dépendances qui sont pas fournies
à chaque fois. Comme j'ai déjà mes commentaires de fonctions dans le
code, je les laisse car je pense que ça aide mieux qu'un blabla que je
ferais de toute façon toujours confus et trop long :p

--
laurent



Avatar
ASM
sortir le IE Mac c'est méchant.
Il n'est plus à prouver que IE Mac ne sert qu'à faire des démos de
choses qui ne marchent pas :D.


Non, à preuve : il fonctionne mieux sur certaines choses que IE 6
Dé solé, je ne sors que le IE que j'ai,
et qui a tt de même plus d'accointances avec celui Win
qu'un FF par exemple.

j'ai tenté :

popup = window.open('test.html');
popup[listener] = function() { alert('vu'); }

Mon IE (Mac) reste muet ...


Passe pas non plus sur IE6, mais bon, je suis pas certain que ça puisse
faire qqchose.


Ça marche très bien avec :
- FF (qui se sert donc de 'onload')
- IE (Mac) si on lui permet d'utiliser 'onload' lui aussi.

j'ai des doutes que ça
marche partout, entre les restrictions des navigateurs, les nouvelles
restrictions IE7 qui pointent leur nez tous les jours


Oui, je me demandais justement : est-ce que IE 7 va autoriser le truc?
popup.onload = function() { alert('ok'); }

A mon avis, on peut rien faire d'un window.open, c'est laid, lent et pas
"reliable" imo.


Là n'était pas la question, mais de voir et comprendre ce
'onreadystatechange' que tu viens de nous sortir du chapeau de M$.


--
Stephane Moriaux et son (moins) vieux Mac déjà dépassé


Avatar
unbewusst.sein
Laurent vilday wrote:


Lol, avec mes doigts :) copié/collé depuis mes librairies et j'adapte un
peu pour le newsgroup pour éviter les dépendances qui sont pas fournies
à chaque fois. Comme j'ai déjà mes commentaires de fonctions dans le
code, je les laisse car je pense que ça aide mieux qu'un blabla que je
ferais de toute façon toujours confus et trop long :p


en tk le loadback marche super bien et est très clair pour ma
comprenotte !
--
Artaban de Médée

1 2