Bonjour à toutes/tous !
J'ai un (gros ?) souci de Javascript sous IE6 concernant la programmation orientée objet.
J'ai été amené, récemment, à refondre et améliorer certains javascripts qu'on utilise dans ma boîte. Jusque là, rien d'anormal, et j'ai opté (pour des raisons aussi bien fonctionelles que de facilité de maintenance et de modularité) pour des versions orientées "objets", chose tout à fait faisable en javascript.
Mes refontes et nouvelles librairies (toutes orientées objet) fonctionnent à merveille sous Firefox 2 / Safari / Opera 9 / IE7, mais sous IE 6, c'est ... désastreux.
Voici un squelette de code que j'ai utilisé (corps des méthodes et noms de variables non-incluses) :
Et évidemment, dans le head de mon HTML :
La portion de code ci-dessus fonctionne à merveille dans Firefox 2 / Safari et autres IE 7 / Opera, mais pas dans IE 6 qui me donne une erreur pour le moins bizarre, laquelle est :
C'est d'autant plus intriguant que la classe DOMUtils est bien définie ! Et il me fait la même chose avec la classe SitemapManager (j'ai testé).
Je ne vois pas pourquoi j'ai cette erreur.
Auriez-vous des pistes / explications ?
Modifié par Ladytron (31 Oct 2007 - 15:04)
J'ai un (gros ?) souci de Javascript sous IE6 concernant la programmation orientée objet.
J'ai été amené, récemment, à refondre et améliorer certains javascripts qu'on utilise dans ma boîte. Jusque là, rien d'anormal, et j'ai opté (pour des raisons aussi bien fonctionelles que de facilité de maintenance et de modularité) pour des versions orientées "objets", chose tout à fait faisable en javascript.
Mes refontes et nouvelles librairies (toutes orientées objet) fonctionnent à merveille sous Firefox 2 / Safari / Opera 9 / IE7, mais sous IE 6, c'est ... désastreux.
Voici un squelette de code que j'ai utilisé (corps des méthodes et noms de variables non-incluses) :
// Javascript - Utilitaires DOM divers (fonctions issues du MDC). Fichier : DOMUtils.object.js
function DOMUtils() {
// membres de classe
};
DOMUtils.prototype.getNextSibling = function(oElement) {
// code de la méthode
};
// autres définitions de méthodes de la classe DOMUtils
// Javascript - Gestionnaire de plan de site avec niveaux dépliables. Fichier : SitemapManager.object.js
function SiteMapManager(sID, DOMUtils) {
// membres de classe
};
SiteMapManager.prototype.apply = function() {
// code de méthode
};
// autres définitions de méthodes de la classe SiteMapManager
Et évidemment, dans le head de mon HTML :
<script type="text/javascript" src="DOMUtils.object.js"></script>
<script type="text/javascript" src="SitemapManager.object.js"></script>
<script type="text/javascript">
window.onload = function() {
var _DOMUtils = new DOMUtils();
var stdSMM = new SiteMapManager("stdSiteMap",_DOMUtils).apply();
var h2SMM = new SiteMapManager("h2SiteMap",_DOMUtils).setTitleFolding(true,"h2").apply();
};
</script>
La portion de code ci-dessus fonctionne à merveille dans Firefox 2 / Safari et autres IE 7 / Opera, mais pas dans IE 6 qui me donne une erreur pour le moins bizarre, laquelle est :
Ligne : 14
Car : 3
Erreur : 'DOMUtils' est indéfini
Code : 0
C'est d'autant plus intriguant que la classe DOMUtils est bien définie ! Et il me fait la même chose avec la classe SitemapManager (j'ai testé).
Je ne vois pas pourquoi j'ai cette erreur.

Auriez-vous des pistes / explications ?

Modifié par Ladytron (31 Oct 2007 - 15:04)