paco: event für js-funktion ändern

Beitrag lesen

Hallo allerseits,
habe eine Anfängerfrage. Ich habe folgendes (freie) skript gefunden, dass bei Mausklick ein kleines Feuerwerk an der Stelle des Mauszeigers produziert:

var fireworks={  
timeout: 40, // = fireworks speed, larger number = slower speed (suggested 50)  
sparksAflyin : 0,  
totalSparks : 0,  
sparksOn : 1,  
iecompattest:function (){  
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;  
},  
mouseDown:function (e) {  
var f=fireworks, e=e? e : window.event;  
if (f.sparksOn) {  
f.mousex = typeof e.pageX=='number'? e.pageX : e.x+f.iecompattest().scrollLeft;  
f.mousey = typeof e.pageY=='number'? e.pageY : e.y+f.iecompattest().scrollTop;  
if (!f.sparksAflyin) {  
f.sparksAflyin = 1;  
f.totalSparks = 0;  
for(var i = 0; i < 10; i++)  
document.getElementById('sDiv'+i).style.visibility = 'visible',  
f.moveTo(i,0);  
}  
}  
},  
moveTo:function (i,j){  
var f=fireworks, j=j;  
if (j < f['a'+i]['x'].length) {  
var tempx = f['a'+i]['x'][j]+f.mousex,  
tempy = f['a'+i]['y'][j++]+f.mousey,  
ww=window.innerWidth?window.innerWidth:f.iecompattest().offsetWidth,  
wh=window.innerHeight?window.innerHeight:f.iecompattest().offsetHeight,  
px=typeof pageXOffset=='number'?pageXOffset:f.iecompattest().scrollLeft,  
py=typeof pageYOffset=='number'?pageYOffset:f.iecompattest().scrollTop;  
tempx = tempx+30 > ww+px? ww+px-30 : tempx;  
tempy = tempy+30 > wh+py? wh+py-30 : tempy;  
document.getElementById('sDiv'+i).style.left = tempx+'px';  
document.getElementById('sDiv'+i).style.top = tempy+'px';  
setTimeout(function(){f.moveTo(i,j);}, f.timeout)  
}  
else {  
document.getElementById('sDiv'+i).style.visibility = '';  
f.totalSparks++;  
}  
if (f.totalSparks == 10) {  
f.sparksAflyin = 0;  
f.totalSparks = 0;  
}  
},  
a0:{x:[20,20,10,0,0,0,0,0,0,0,0,0],  
y:[-20,-40,-60,-80,-60,-40,-20,0,20,40,60,80]},  
a1:{x:[20,20,17,36,60,78,90,92,93,98,108,120,133,152,181],  
y:[-20,-20,-33,-38,-38,-27,-2,25,51,84,113,141,162,212,253]},  
a2:{x:[20,20,2,3,4,5,6,7,8,9,10,12,13,15,18],  
y:[-20,-20,-33,-38,-38,-27,-2,25,51,84,113,141,162,212,253]},  
a3:{x:[-20,-20,-2,-1,7,10,18,35,60,102,94,94,93,97,108,111,117,127],  
y:[-20,-25,-64,-89,-104,-150,-173,-197,-213,-199,-151,-101,-66,-17,27,87,140,189]},  
a4:{x:[-20,-20,-10,-39,-30,-69,-64,-138,-154,-200,-181,-209,-191,-207,-203,-213,-202,-221,-211],  
y:[-20,-20,-28,-51,-79,-100,-135,-154,-193,-183,-149,-134,-89,-60,8,51,107,157,201]},  
a5:{x:[-20,-29,-51,-72,-105,-133,-164,-189,-209,-229,-247,-270,-279,-282,-283,-283,-285,-286,-288],  
y:[-20,-55,-86,-116,-154,-183,-205,-217,-217,-198,-169,-120,-44,-8,40,87,144,190,248]},  
a6:{x:[-20,-20,-7,14,44,79,143,186,217,226,234,244,250,259,265,274],  
y:[-20,-21,-72,-113,-139,-166,-188,-181,-126,-68,-3,54,134,187,215,257]},  
a7:{x:[20,20,-3,-9,-13,-27,-33,-44,-54,-66,-77,-95,-107,-136,-150,-160,-164,-168,-171,-172,-172,-176,-175],  
y:[-20,-26,-43,-63,-89,-116,-145,-169,-201,-222,-240,-253,-254,-245,-220,-195,-160,-124,-81,-53,-26,19,68]},  
a8:{x:[-20,20,-35,39,0,45,-1,24,-15,14,-20,35,-18,38,-11,16,49,64,81,93,100,103,109],  
y:[-20,-20,-32,-42,-62,-76,-89,-107,-132,-147,-173,-180,-192,-209,-236,-193,-119,-73,-24,51,95,130,188]},  
a9:{x:[-20,-51,-89,-110,-165,-191,-228,-240,-259,-271,-277,-281,-287],  
y:[-20,-20,-35,-37,-34,-16,10,47,105,150,189,227,273]}  
};  
  
// document.onmousedown = fireworks.mouseDown;

hoffe das war nicht zu lang..

Das möchte ich jetzt so umbauen, dass ich es bei einem anderen click-event _einmalig_ abfeuern kann.

Ich versteh aber leider zuwenig von javascript.. Wenn ich die letzte Zeile bei meinem onClick aufrufe, funktioniert das skript wie ursprünglich geplant und wird dauerhaft bei jedem onmousedown ausgeführt.

Wenn ich in meinem click-event nur die Funktion fireworks.mousedown() aufrufe fehlt dem skript die variable e (Zeile 9, e is undefined)

wenn ich diese vorher (wie innerhalb des skripts) mit
var e=e? e : window.event;
initialisiere ist sie immer noch undefined.

Weiß jemand auf die schnelle rat?

dankeschön,
Paco