2015-01-08 19 views
5

Non riesco a trovare una risposta per questo e mi ci è voluto un po 'per ricrearlo come un semplice violino/penna ma finalmente ho.Eventi D3 che si attivano su un elemento svg nascosto

Sto lavorando all'applicazione Vaadin che utilizza D3 per disegnare e manipolare la grafica svg. In un punto ci sono svg sullo schermo che hanno visibility:hidden.

Questo funziona perfettamente trovare in tutti i browser.

Questi elemento nascosto hanno cliccare ed eventi mouseover, che ancora una volta trovare lavoro in tutti i browser Tuttavia in Firefox versione 34 l'elemento nascosto ancora sparare loro eventi (clicca e passaggio del mouse) quando sono ancora nascosti.

Per spiegare meglio: quando un pulsante è nascosto, l'evento mouseover non deve essere attivato, quando è visibile. È così che funziona in TUTTI i browser ad eccezione di firefox 34, 35 beta e 36 dev edition. Funziona bene in firefox 31.

Sto sospettando che si tratti di un errore in D3, ma volevo un secondo parere o che qualcuno indicasse il mio errore. Vale la pena notare che l'impostazione display:none sull'elemento funziona in firefox 34 e versioni successive, tuttavia non ritengo che il problema si trovi lì

Ho creato un jsbin che mostra il codice, ci sono due icone arancioni, una ha visibility:hidden (potrebbe essere necessario disabilitare per vederlo) se si passa il mouse sopra l'elemento nascosto con il cromo non succede nulla. ma con firefox 34 gli eventi sparano. Here's the jsBin

Qualche idea spiega perché si spara? Sto indovinando sia problema D3 o Firefox bug, però mi piacerebbe inchiodare giù a uno fissare il mio codice su contribuire ad una correzione nelle altre aree

Grazie

+0

C'è una ragione per cui sei andato con visibilità: nascosto invece di display: nessuno? – Elijah

+0

Non è a mia conoscenza, sto contrattando su un grande progetto legacy, non penso che ci sia alcuna premessa in esso – atmd

risposta

4

Questo è solo un bug in Firefox. Se tu lo risolvi, io lo risolvo.

Dato un valore specifico per gli eventi puntatore, possiamo dire esattamente se l'elemento debba ricevere eventi o meno. Se non sappiamo quale valore puntatore-eventi ha allora l'elemento potrebbe o meno ricevere gli eventi del puntatore. È tutto ciò che la specifica sta cercando di dire. Non c'è ambiguità qui.

Si noti che il bug di firefox interessa solo gli elementi <image>. Se si sostituisce l'immagine con un elemento <rect>, si dovrebbe vedere il risultato corretto anche in Firefox.

+1

Fantastico, grazie per questo. In una via sono contento che sia un bug e non solo che impazzisco. L'ho segnalato https://bugzilla.mozilla.org/show_bug.cgi?id=1119698 – atmd

2

Le spec afferma che questo è un comportamento normale :

a seconda del valore di immobili in ‘pointer-events’, grafica elementi che hanno la loro proprietà ‘visibility’ impostata nascosto ancora potrebbero ricevere gli eventi.

Come un lavoro intorno a voi potrebbe utilizzare display: none o aggiungere pointer-events: none per la classe con visibility: hidden.

+0

Non posso credere che iv non lo abbia mai incontrato prima, quindi suppongo che se le specifiche dicono che gli eventi "potrebbero" , non esiste un modo sbagliato per un browser di implementarlo. Grazie.Per l'aiuto – atmd

+0

* potrebbe * è un termine interessante da inserire in una specifica. – Elijah

+1

No, è un bug di Firefox e stai fraintendendo le specifiche. –

Problemi correlati