Pouvez *vous* obtenir SVG sur un navigateur mobile à accepter la souris/les événements tactiles? Je ne peux pas

- Je afficher un code HTML, avec un intégré à SVG. Je le veux pour détecter les événements de la souris, mais il ne travaille pas sur le mobile (Android Jellybean). Il fonctionne très bien pour un navigateur de bureau.

Voici une page de démonstration: http://artsyenta.org/misc/ss/j.touchtry1.html .

Si vous faites glisser la souris sur les cercles de vous voir un journal de la souris entrées dans les éléments nommés "j_xxx". Cela fonctionne dans Firefox et Chrome.

Ouvrir votre tablette Android (j'ai aussi essayé ce que quelqu'un est iPhone, avec les mêmes résultats). Faites glisser votre doigt sur les cercles et vous obtenez un touchenter événement seule maintenant et puis. Rien d'autre montre.

Vous pouvez voir l'ensemble de la page et le code en affichant la source de la page. Il n'est pas long, la partie la plus longue est le SVG définition. Les pièces importantes sont:

$(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());
}

Voici une partie de la 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>

Encore une fois, je détecte les événements de la souris sur un navigateur de bureau, mais pas de toucher ou les événements de la souris pour un navigateur mobile. Est-il un manque de technique, ou qu'il manque quelque chose avec les mobiles? Il ne fonctionne pas avec l'iPhone navigateur, Google Chrome sur Jellybean et Firefox mobile.

Merci d'avance,
Jerome.

  • Le support SVG sur les navigateurs mobiles est très limitée: caniuse.com/#search=svg
  • Essayez d'utiliser le débogueur à distance sur mobile de google Chrome pour voir ce qui se passe étape par étape. Il devrait fonctionner, cependant, je ne pense pas que c'est une SVG de problème!
  • Pour jgillich, par caniuse.com SVG est censé travailler sur Chrome. Pour F. X., j'ai essayé de débogage à distance sur mobile Chrome. J'ai deux pages, l'j.touchtry1.html avec SVG simple et à l'aide de la RaphaelJS bibliothèque (j.raphael6.html). L'ancienne page génère une occasionnelle événement mousedown. La dernière page génère de la "undefined" (événement.le type n'est pas défini lorsque l'événement est généré). J'ai désactivé un "n'ai-je changer pour un autre chemin SVG/fenêtre?" détecteur. Je devrais avoir des centaines de mousemove événements. J'obtiens maintenant et puis. Je vais essayer de débogage, le Raphaël des démos qui ne de travailler.