Können *Sie* Holen Sie sich SVG auf mobilen browser akzeptieren Maus/touch-events? Ich kann nicht

Ich die Anzeige einer HTML -, mit eingebettetem SVG. Ich will es erkennt Maus-Ereignisse, aber es funktioniert nicht auf dem Handy (Android Jellybean). Es funktioniert gut für einen desktop-browser.

Hier ist eine demonstrations-Seite: http://artsyenta.org/misc/ss/j.touchtry1.html .

Wenn Sie ziehen Sie die Maus über die Kreise, die Sie sehen, ein log der Maus die Einträge in der Elemente mit den Namen "j_xxx". Das funktioniert in Firefox und Chrome.

Öffnen Sie Ihr Android-tablet (ich habe auch versucht diese auf jemandes iPhone, mit dem gleichen Ergebnis). Ziehen Sie Ihren finger über die Kreise und Sie erhalten eine touchenter event nur hin und wieder. Nichts anderes zeigt.

Sehen Sie die ganze Seite und code anzeigen, indem Sie die Seite Quelle. Es ist nicht lange, das längste Teil ist die SVG-definition. Die wichtigsten Teile sind:

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

Hier ist ein Teil des 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>

Wieder, ich kann Maus-Ereignisse auf einem desktop-browser, aber keine touch-oder Maus-events, die für einen mobilen browser. Ist es eine fehlende Technik, oder es fehlt etwas mit den Handys? Schlägt es mit den iPhone-browser, Google Chrome auf Jellybean und Firefox mobile.

Vielen Dank im Voraus,
Jerome.

  • SVG-Unterstützung auf mobilen Browsern ist sehr begrenzt: caniuse.com/#search=svg
  • Versuchen Sie, den remote-debugger auf mobilen Chrome, um zu sehen, was passiert, Schritt für Schritt. Es sollte aber funktionieren, ich glaube nicht, es ist ein SVG-Problem!
  • Für jgillich, pro caniuse.com SVG ist angeblich arbeitet an Chrome. Für F. X., habe ich versucht, eine remote-debugging auf mobilen Chrome. Ich habe zwei Seiten, die j.touchtry1.html mit plain SVG und einer mit der Bibliothek RaphaelJS (j.raphael6.html). Die ehemalige Seite erzeugt eine gelegentliche mousedown-Ereignis. Die letztere Seite erzeugt einige "undefined" (event.der Typ ist nicht gesetzt, wenn das Ereignis generiert wird). Ich schaltete eine "habe ich den Wechsel auf ein anderes SVG-Pfad/Fenster?" - Detektor. Ich hätte Hunderte von mousemove-Ereignisse. Ich bekomme einige jetzt und dann. Ich werde versuchen, Debuggen, Raphael demos, die funktionieren.
Schreibe einen Kommentar