Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Scripts objets

Envoyé par : ptitrene

Date : 28/06/2005 16:04

Bonjour,

Je tente en vain d'intégrer les scripts javascript (rico.js et prototype.js) fournis par Rico dans une page XUL (ces scripts fonctionnent parfaitement en HTML sur Firefox)...

Dès l'ajout des lignes de déclaration des scripts, une erreur javascript du type "la fonction n'existe pas" survient au premier bindAsEventListener dans la fonction suivante... pourtant, l'objet en question est bien un prototype, donc devrait hériter de cette fonction

  initializeEventHandlers: function() {
     if ( typeof document.implementation != "undefined" &&
        document.implementation.hasFeature("HTML",   "1.0") &&
        document.implementation.hasFeature("Events", "2.0") &&
        document.implementation.hasFeature("CSS",    "2.0") ) {
        document.addEventListener("mouseup", this._mouseUpHandler.bindAsEventListener(this),  false);
        document.addEventListener("mousemove", this._mouseMoveHandler.bindAsEventListener(this), false);
     }
     else {
        document.attachEvent( "onmouseup",   this._mouseUpHandler.bindAsEventListener(this) );
        document.attachEvent( "onmousemove", this._mouseMoveHandler.bindAsEventListener(this) );
     }
  }
}
var dndMgr = new Rico.DragAndDrop();
dndMgr.initializeEventHandlers(); 

Quelle différence y a t-il sur ce point avec une page HTML ?

# Re: Scripts objets

Envoyé par : laurentj

Date : 29/06/2005 10:43

Une page HTML, c'est du DOM HTML.

En XUL, c'est du DOM... XML

Donc il y a des trucs que tu as dans les objets DOM en HTML que tu n'as pas en XUL, et vice versa...

# Re: Scripts objets

Envoyé par : ptitrene

Date : 29/06/2005 16:33

Merci Laurent,

Je tente depuis ce matin de trouver un site recensant ces différences sur Google ; en vain...

Si je décortique le code, ce sont les fonctions qui ne semblent pas implémentées de la même manière :

  • En HTML, ma fonction _mouseUpHandler hérite de l'objet Function auquel on a ajouté dans prototype.js une propriété bindAsEventListener
  • Dans XUL, la fonction _mouseUpHandler ne semble pas bénéficier de l'héritage de l'objet Function

Ce comportement est-il justifié où est-ce un problème d'implémentation ?

Dans le prototype de l'objet Rico.DragAndDrop on a une fonction initialize qui se charge de valoriser par défaut les variables de mon objet... Cette fonction semble être appelée dans la fonction create de mon objet... Comment XUL arrive à exécuter cette fonction si la propriété apply du prototype de Function n'existe pas ?

C'est complexe, mais j'aimerais comprendre le fonctionnement de XUL avant d'abandonner l'utilisation de ce script...

# Re: Scripts objets

Envoyé par : ptitrene

Date : 30/06/2005 16:19

J'ai continué mes tests et recherches :

Je m'aperçois que en XUL, une fonction n'hérite de l'objet Function que si elle est appelée via une syntaxe du type :

var f = new Function("a","b","return a+b");

Alors qu'au sein d'un document HTML, l'appel sous la syntaxe suivante hérite également des propriétés de l'objet Function

function mafonction(a,b) { return a+b; }
var f=mafonction(5,3);

Est-ce que quelqu'un peut me confirmer ou m'infirmer cela ?

# Re: Scripts objets

Envoyé par : laurentj

Date : 30/06/2005 17:10

tes deux exemples sont valables à la fois en XUL et HTML. ce dont tu parles ici, ce ne sont purement que des trucs javascript, et pas lié à XUL ou html. Je doute fort qu'il y ait donc des différences à ce niveau là.

La seule différence est que dans le premier cas, tu as une seule fonction, nommé f. alors que dans le deuxième, tu as deux fonctions au code identique mais au nom différent (f et maFonction) (je penses que tu as oublié le new dans var f = maFonction(), sinon là, f ne contient que le résultat de la fonction maFonction)

Quand à ton problème plus haut, je n'ai pas le temps de voir ce qui cloche dans les scripts que tu utilises.

Un petit tour du coté du guide javascript ?

# Re: Scripts objets

Envoyé par : ptitrene

Date : 01/07/2005 07:59

Effectivement, j'avais oublié le new...

Bon, je vais continuer à écumer les tutos et forums traitant des objets Function en js...

Merci beaucoup...

# Re: Scripts objets

Envoyé par : ptitrene

Date : 11/07/2005 09:10

Le bug 300079 a été ajouté (encore non confirmé) : les fonctions javascript ne semblent pas être instanciées de la même manière en XUL qu'au sein d'un doc HTML...

# Re: Scripts objets

Envoyé par : ptitrene

Date : 16/09/2005 12:27

C'est encore moi...

Function.prototype.foo = "bar";
function f(){}
alert(f.foo);

Je serais très reconnaissant si quelqu'un pouvait tester la fonction précédente dans un document XUL sur une beta de Firefox 1.5 ou une version antérieure à la 1.0.4...

Je voudrais répondre à une demande de Brendan Eich sur ce bug, qui se demande depuis quand cela dysfonctionne, et si cela est réglé dans les versions à venir ; mais je ne peux pas installer de beta sur mon poste...

Merci d'avance

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.