Visualizzo un codice HTML, con un file SVG incorporato. Voglio che rilevi gli eventi del mouse, ma non funziona sul cellulare (Android Jellybean). Funziona bene per un browser desktop.Can * you * get SVG sul browser mobile accetta eventi mouse/touch? Non riesco a
Questa è una pagina di dimostrazione: http://artsyenta.org/misc/ss/j.touchtry1.html.
Se si trascina il mouse sui cerchi, viene visualizzato un registro di voci del mouse negli elementi denominati "j_xxx". Funziona su Firefox e Chrome.
Apri il tuo tablet Android (l'ho provato anche sull'iPhone di qualcuno, con gli stessi risultati). Trascina il dito sulle cerchie e ottieni un evento touchenter solo di tanto in tanto. Nient'altro mostra.
È possibile visualizzare l'intera pagina e il codice visualizzando l'origine della pagina. Non è lungo, la parte più lunga è la definizione SVG. Le parti importanti sono:
$(document).ready(function() {
makeSomethingHappen("hello");
});
function makeSomethingHappen(svg) {
placeATop(true);
$('[class^=j_]')
.on("mouseover", function(event) { logAction(event, this); })
.on("mouseout", function(event) { logAction(event, this); })
.on("touchstart", function(event) { logAction(event, this); })
.on("touchend", function(event) { logAction(event, this); })
.on("touchenter", function(event) { logAction(event, this); })
.on("touchleave", function(event) { logAction(event, this); })
.on("touchEnter", function(event) { logAction(event, this); })
.on("touchLeave", function(event) { logAction(event, this); });
}
var cntAct = 0;
function logAction(ev, ele) {
cntAct++;
var logSpan = $('#logTrace');
logSpan.html("" + cntAct + ": " + ev.type + " '" + $(ele).attr("class")
+ "'<br/>" + logSpan.html());
}
Ecco parte del SVG:
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
id="jsvg" x="0px" y="0px" width="376.247px" height="364.318px" viewBox="140 110 130 120"
enable-background="new 0 0 376.247 364.318" xml:space="preserve">
<g id="Layer_1">
<path class="j_aa_" opacity="0.75" fill="#FFFFFF" stroke="#0071BC" stroke-width="0.9925" enable-background="new " d="M224.739,6.55l-6.414,23.957c-10.377-2.785-21.304-2.785-31.671,0L180.232,6.55C194.813,2.63,210.155,2.63,224.739,6.55z"/>
[snip]
</g>
</svg>
Ancora una volta, rilevo eventi del mouse su un browser desktop, ma non toccare o del mouse eventi per un browser mobile. C'è una tecnica mancante o qualcosa manca con i cellulari? Fallisce con il browser iPhone, Google Chrome su Jellybean e Firefox mobile.
Grazie in anticipo, Jerome.
SVG sui browser mobili è molto limitata: http://caniuse.com/# search = svg – jgillich
Prova a utilizzare il debugger remoto su Chrome mobile per vedere cosa succede passo passo. Tuttavia, dovrebbe funzionare, non penso che sia un problema SVG! –
Per jgillich, per caniuse.com SVG dovrebbe funzionare su Chrome. Per F.X., ho provato un debug remoto su Chrome mobile. Ho due pagine, la j.touchtry1.html con semplice SVG e una che usa la libreria RaphaelJS (j.raphael6.html). La precedente pagina genera un occasionale evento da falso. L'ultima pagina genera alcuni "non definiti" (event.type non viene impostato quando viene generato l'evento). Ho disattivato un "ho cambiato in un altro percorso SVG/finestra?" rivelatore. Dovrei avere centinaia di eventi per me. Ne ricevo un po 'di tanto in tanto. Proverò a eseguire il debug delle demo di Raphael che * funzionano *. –