Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Mootools
Mootools Forum d'entraide sur le framework MooTools. Avant de poster : Tutoriels Mootools, FAQ MooTools, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/04/2011, 11h30   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2005
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 22
Points : 10
Points : 10
Par défaut MooTools 1.3.1 et GreaseMonkey

Bonjour,

Je n'arrive pas à trouver les modifications qu'il faut apporter à cette version de MooTools pour l'utiliser avec GreaseMonkey.
J'ai les erreurs suivantes :
  • Component is not available [... core.js line 5343]
  • Window.fireEvent is not a function [... core.js line 5305]

Le script que j'ai créé pour tester la nouvelle version de MooTools est :
Code :
1
2
3
4
5
6
7
8
// ==UserScript==
// @name		testMootools
//
// @include		http://*
// @require		http://.../tools/mt/1.3.1/core.js
// @require		http://.../tools/mt/1.3.1/more.js 
// ==/UserScript==
var test='';
De ce que j'ai compris, l'objet window est XPCNativeWrapper par GM. De ce fait, MooTools n'arrive pas à lui implémenter d'autres méthodes.

Les lignes incriminées sont :
Je mets en PJ dans un zip le script MooTools.core 1.3.1 pour éviter que vous le recherchiez sur le net si vous ne l'avez pas.

Je ne sais pas si c'est le meilleur endroit pour poster ce message car je pense que mon problème est lié à XPCNativeWrapper et comment le modifier ... En tous cas, je vous remercie pour votre lecture et vos réponses.

Bonne journée,
Nuhuruine
Fichiers attachés
Type de fichier : zip core.zip (34,3 Ko, 0 affichages)
nuhuruine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2011, 11h11   #2
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 686
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 686
Points : 5 757
Points : 5 757
Par défaut :(

Bonjour,

Je suis navré mais je n'ai pas eu le temps de me pencher sur votre problème et ce n'est pas demain la veille que je pourrai le faire...
Avez-vous trouvé quelque chose depuis ?
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 09h07   #3
Candidat au titre de Membre du Club
 
Inscription : novembre 2005
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 22
Points : 10
Points : 10
Bonjour,

aucun problème, je cherche toujours en parallèle
J'ai une piste mais il faut du temps pour que je l'approfondisse
Je verrais dans le courant de cette semaine et je vous tiens au courant !

Bonne journée,
Nuhuruine.
nuhuruine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 10h57   #4
Candidat au titre de Membre du Club
 
Inscription : novembre 2005
Messages : 22
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 22
Points : 10
Points : 10
Bonjour,

J’ai donc fais quelques tests et j’ai continué à décrypter les sites anglais :p
Commençons par la première erreur :
Un objet qui est XPCNativeWrapper, ne peut être parcourue par la méthode
Code :
1
2
3
4
 // Prenons l’objet ObjetWrapper qui est un NPCNativeWrapper
for (var key in ObjetWrapper) {
	// traitement
}
J’ai trouvé sur le wiki de GM et sur le MDC de FF le code suivant pour parcourir ObjetWrapper :
Code :
1
2
3
for each(var value in ObjetWrapper ){
	unsafeWindow.console.log(value) ;
}
Cependant, cela ne me permet de pas de faire un fix pour cette erreur. J’ai poussé un peu mes recherches et j’ai utilisé une fonction MooTools Object.keys qui renvoie un tableau contenant toutes les clefs. Sauf que le résultat est :
Citation:
["window", "uid", "$constructor", "$family", "html", "head", "newElement", "newTextNode", "getDocument", "getWindow", "id", "getElements", "getElement", "contains", "addListener", "removeListener", "retrieve", "store", "eliminate", "addEvent", "removeEvent", "addEvents", "removeEvents", "fireEvent", "cloneEvents", "getSize", "getScroll", "getScrollSize", "getPosition", "getCoordinates", "getHeight", "getWidth", "getScrollTop", "getScrollLeft", "getScrollHeight", "getScrollWidth", "getTop", "getLeft"]
J’ai l’impression qu’il en manqué …
J’ai réglé la question en supprimant la ligne est les deux suivantes et j’ai mis poll() ;
Code :
1
2
3
4
5
 //if ('onreadystatechange' in document) document.addListener('readystatechange', check);
//else shouldPoll = true;
 
//if (shouldPoll) poll();
poll();
Je n’ai plus l’erreur. Par contre, je n’arrive pas à voir la nuance entre poll et document.addListener('readystatechange', check);
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
var checks = [];
var check = function(){
	for (var i = checks.length; i--;) if (checks[i]()){
		domready();
		return true;
	}
 
	return false;
};
 
var poll = function(){
	clearTimeout(timer);
	if (!check()) timer = setTimeout(poll, 10);
};
 
document.addListener('DOMContentLoaded', domready);
 
// doScroll technique by Diego Perini http://javascript.nwbox.com/IEContentLoaded/
var testElement = document.createElement('div');
if (testElement.doScroll && !isFramed){
	checks.push(function(){
		try {
			testElement.doScroll();
			return true;
		} catch (e){}
 
		return false;
	});
	shouldPoll = true;
}
 
if (document.readyState) checks.push(function(){
	var state = document.readyState;
	return (state == 'loaded' || state == 'complete');
});
Bien maintenant passons à la deuxième erreur :
MooTools.core utilise les fonctions anonymes pour les différentes parties qu’il modifie. Les appels pour la quasi-totalité sont (function(){}).call(this) ;
J’ai tracé avec la console pour savoir si les méthodes étaient bien implantés au fur et à mesure. Il en ressort que addEvent et fireEvent sont bien sur l’objet this.
La fonction qui s’occupe du DOMReady se fait appeler : (function(){}).call(window,document) ;

Pourquoi ? Je ne sais pas. Par contre en replaçant window par this et document par this.document, je n’ai plus d’erreur.

Quel est l’impact de cette modification ? Actuellement je n’en sais rien. Si quelqu’un sait pourquoi …

Je laisse ouvert le sujet car je n’ai pas encore vu l’impact sur les fonctions MooTools.

Je vous tiendrais informé de mon avancement. Seulement, c’est dans un ou deux mois vu le temps que je vais pouvoir y consacrer. N’hésitez pas à apporter votre contribution

Bonne journée,
Nuhuruine
nuhuruine est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h39.


 
 
 
 
Partenaires

Hébergement Web