2013-03-08 9 views
5

Capisco l'evento mouseup per la finestra non è lì per IE 7 e 8. Mi chiedevo se qualcuno ha trovato un work-around per questo o se questo è anche possibile.Hack per `mouseup` al di fuori della finestra in IE 7/8

Attualmente sto lavorando su un progetto in cui l'utente può fare clic, trascinare per disegnare una linea, e se l'utente trascina al di fuori della finestra e lascia sul mouse, la transazione disegno verrà annullata.

+1

Dato che c'è un bug di sicurezza archiviato per IE (tutte le versioni) tracking/fornendo movimenti del mouse fuori dalla finestra del browser (anche se l'app non ha focus!) Http://spider.io/blog/2012/12/internet-explorer-data-leakage/noi (la comunità di sviluppatori) ci aspettiamo che questo comportamento sia corretto in tutte le versioni di IE. Quindi a questo punto sarei incredibilmente precauico di dipendere dagli eventi lanciati oltre la finestra del browser. – scunliffe

+1

... Tuttavia Microsoft (ben consapevole della propria posizione nel mondo degli annunci online) sta aspettando e vede un approccio: http://blogs.msdn.com/b/ie/archive/2012/12/13/update- to-pretese-informazioni-e-sicurezza-problema-con-mouse-posizione-comportamento.aspx – scunliffe

risposta

0

Non direttamente, ma credo che questo dovrebbe funzionare.

Nell'evento mousemove, verificare la proprietà Event.buttons. Se è zero, l'utente deve aver rilasciato il mouse fuori dalla finestra ed è possibile annullare il trascinamento.

Sto verificando la compatibilità del browser di questo ora, quindi questa risposta può essere modificata. Il mio computer è lento in questo momento!

2

La tua difficoltà sembra che sarebbe più dalla finestra perdere la portata dell'evento.

Stai usando jQuery? Con jQuery puoi anche taggare sull'evento mousemove e utilizzare l'attributo "which" per rilevare se il pulsante è premuto. Questo spara anche quando torni alla finestra. Ma NON spara quando sei fuori dalla finestra.

In alternativa è possibile utilizzare $ (finestra) .mouseleave per rilevare quando esce dalla finestra. Tuttavia, una volta lasciata la finestra, non è possibile rilevare ulteriori eventi del mouse (sarebbe un difetto orribile se fossero in grado di rilevare quando si fa clic con il tasto destro sul desktop, ecc.).

Quindi è un po 'limitato dalle implementazioni di sicurezza del browser in TUTTI i browser e non sarà in grado di ignorarlo ... ma è possibile aggiungere un po' di lavoro attorno agli eventi per fornire un'esperienza "simile".

+0

Stiamo usando Dojo 1.7. Stavo pensando di usare l'evento 'mouseleave' della finestra ma che corrisponde alla funzionalità degli altri browser. C'è _sort-of_ un modo per rilevare gli eventi del mouse fuori dalla finestra in alcuni browser. Abbiamo già implementato l'evento window.onmouseup che viene registrato quando l'utente 'mousedown's nell'area di disegno. – AdamDev

+0

Cool, Dojo, Mootools o jQuery almeno si sta utilizzando qualcosa per astrarre le differenze del browser. In questo caso penso che l'orso stia "cercando" di rilevare alcuni/alcuni eventi con il mouse fuori dal browser. –

+0

Ho pensato, ma almeno meritava uno scatto! Grazie per l'aiuto. – AdamDev

Problemi correlati