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:
  1. Effect.MoveMargin = Class.create(Effect.Base, {  
  2.   initialize: function(element) {  
  3.     this.element = $(element);  
  4.     if (!this.element) throw(Effect._elementDoesNotExistError);  
  5.     var options = Object.extend({  
  6.       x:    0,  
  7.       y:    0,  
  8.     }, arguments[1] || { });  
  9.     this.start(options);  
  10.   },  
  11.   setup: function() {  
  12.     this.originalLeft = parseFloat(this.element.getStyle('margin-left') || '0');  
  13.     this.originalTop  = parseFloat(this.element.getStyle('margin-top')  || '0');  
  14.   },  
  15.   update: function(position) {  
  16.     this.element.setStyle({  
  17.       marginLeft: (this.options.x  * position + this.originalLeft).round() + 'px',  
  18.       marginTop:  (this.options.y  * position + this.originalTop).round()  + 'px'  
  19.     });  
  20.   }  
  21. });  
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.