ugrás a tartalomhoz

Scriptaculous Effect.Move átírás

Cadeyrn · 2009. Feb. 5. (Cs), 21.12
Üdv!

Belefutottam egy igen érdekes bugba, természetesen explorer, mi más.
Effect.Move-ot használva azon elemek megjelenítésekor, amik eredetileg nem látszottak az oldalon (overflow-val voltak maszkolva) az oldalon mozgatva a kurzort az elemek villognak: hol teljesen eltűnnek, hol megjelennek.

Kíváncsiságból kiróbáltam nem Effect.Move-val, hanem a margin-top értéket változtatva mozgatni a cuccot, és lőn: a gond sehol.

Gondoltam beleírom a scriptaculous-ba magamnak ez, mint effektet, a következő kóddal:

Effect.MoveMargin = Class.create(Effect.Base, {
  initialize: function(element) {
    this.element = $(element);
    if (!this.element) throw(Effect._elementDoesNotExistError);
    var options = Object.extend({
      x:    0,
      y:    0,
    }, arguments[1] || { });
    this.start(options);
  },
  setup: function() {
    this.originalLeft = parseFloat(this.element.getStyle('margin-left') || '0');
    this.originalTop  = parseFloat(this.element.getStyle('margin-top')  || '0');
  },
  update: function(position) {
    this.element.setStyle({
      marginLeft: (this.options.x  * position + this.originalLeft).round() + 'px',
      marginTop:  (this.options.y  * position + this.originalTop).round()  + 'px'
    });
  }
});
Azonban a várt eredmény elmaradt: ettől az IE teljesen és tökélesen megállt. Először annyit mondott, hogy 'Effect not defined', aztán hogy 'Kezeletlen kivétel történt'.

Az egész napom erre a dögre ment rá, kérek valakit, akinek van ötlete, segítsen.
Köszönöm,
Molnár Péter
 
1

hogy az a jó....

Cadeyrn · 2009. Feb. 5. (Cs), 22.00
A 7. sor végére nem kell vessző.
Elnézést, hogy emiatt topicot nyitottam.
2

Ebbe szerintem mindenki

Fraki · 2009. Feb. 6. (P), 06.12
Ebbe szerintem mindenki belefut újra és újra, aki js-ben kódol. Az IE nem tolerálja ezt a szintaxist, ha jól rémlik, az ECMAScript sem, úgyhogy ebben épp szabványkövető, de ha tévedek, javítsanak ki.

És nem kell lerágni a körmöd, az olyan esetekre, amikor nincs érdemleges debug információ (CSS-problémáknál szok még előfordulni), akkor lehet manuálisan lokalizálni, bájtra pontosan. Szépen elkezded kivagdosni a kód egy nagy részét, azaz visszamész hiba nélküli (persze nem is funkcionáló) állapotra, és darabonként rakod vissza az eredeti kódot.
3

JSLint

Poetro · 2009. Feb. 6. (P), 11.20
A JSLint egyből megmondta volna, hogy hol van szintaktikai hiba, és ha kell, akár a szerkesztődből is futtathatod, ugyanis van bináris változata: JavaScript Lint.