2010-07-05 5 views
1

IE6 commence à faire mal mais il constitue (apparemment) une bonne partie de la part de marché des navigateurs, donc j'ai besoin de faire ce travail.L'événement est indéfini dans IE6 mais fonctionne très bien dans Firefox, Chrome etc

function getPosition(e) 
    { 
    e = e || window.event; 
    var cursor = {x:0, y:0}; 
    if (e.pageX || e.pageY) 
    { 
    cursor.x = e.pageX; 
    cursor.y = e.pageY; 
    } 
else 
{ 
var dex = document.documentElement; 
var b = document.body; 
cursor.x = e.clientX + (dex.scrollLeft || b.scrollLeft) - (dex.clientLeft || 0); 
cursor.y = e.clientY + (dex.scrollTop || b.scrollTop) - (dex.clientTop || 0); 
} 
return cursor; 
} 

function outCursor(e){ 
    var curPos = getPosition(e); 
alert(curPos); 
} 

window.captureEvents(Event.MOUSEMOVE); 


    window.onmousemove = outCursor; 

IE se plaint de l'événement dans window.captureEvents (Event.MOUSEMOVE);

'Événement' est indéfini.

+0

Quelle ligne jette l'erreur? –

+0

Essayez de définir l'onmousemove sur le document plutôt que sur la fenêtre. – amro

+0

@Graphain, il se plaint de Event.MOUSEMOVE – gahza

Répondre

1

Je pense que ie6 ne supporte pas captureEvents. Essayez donc

if (window.captureEvents) { 
window.captureEvents(Event.MOUSEMOVE); 
} 
+0

donc il n'y a pas d'équivalence à captureEvents dans IE6? – gahza

+0

Eh bien, window.onmousemove (ou mieux: document.onmousemove) est l'équivalent IE. En passant, si vous voulez que la fonction 'outCursor' soit utilisable, n'utilisez pas alert (vous pouvez utiliser defaultStatus = curPos) – KooiInc

0

Essayez d'exécuter le script sans window.captureEvents(Event.MOUSEMOVE);. Je ne pense pas que ce soit nécessaire. En outre, comme quelqu'un l'a mentionné le changement de la window.onmousemove à document.onmousemove

également ici est une bonne ressource sur la rédaction de ce type de script http://www.quirksmode.org/js/events_properties.html#position

Questions connexes