Chrome "Emulieren" Touch Events" funktioniert nicht
Habe ich aktiviert das "Emulieren" Touch Events" option in Chrome die Entwickler-Tools. Ich habe ein einfaches test-Programm, dass Warnungen, wenn ich berühren <div>
. Das Programm funktioniert gut auf meinem Galaxy Nexus, aber wenn ich auf den <div>
im Chrome, noch mit dem "Emulieren" Touch-Events" - option aktiviert ist, passiert nichts. Irgendwelche Vorschläge? Bin ich mit diesem Werkzeug richtig?
Hier ist mein code, nichts besonderes.
<!DOCTYPE html>
<html lang="en">
<head>
<style type="text/css">
#main_div
{
position: absolute;
width: 50px;
height: 20px;
background-color: red;
top: 50%;
left: 20px;
}
</style>
<script type="text/javascript">
function init()
{
main_div = document.getElementById("main_div");
main_div.ontouchstart = function()
{
alert("here");
}
}
</script>
</head>
<body onload="init()">
<div>
<p id="x">hello</p>
<p id="y"></p>
</div>
<div id="main_div">
hello
</div>
</body>
</html>
- Ich bin mit der version 19.0.1084.56.
- Haben Sie durch Zufall die Seite zoomed in/out? Event-Koordinaten (sowohl für die Maus und folglich auch der touch sind) in Chrome bekannt sind, werden durch einen Betrag je nach zoom und Seitenlayout. Folglich können Sie nur "fehlt" der Ziel-div vertikal.
- Ich habe meine zoom-Stufen - ich bin bei der standard-zoom. Ich habe auch wie Wild geklickt, die alle um mein Ziel, in der Hoffnung, dass Chrome ist nur das Lesen meine Koordinaten falsch, aber leider ohne Erfolg. Danke für die Anregung.
- Für einige Grund, DOM0-Ereignisse funktionieren nicht mit der touch emulation. Sie können die DOM2
addEventListener("ontouchstart",...)
als workaround. Mittlerweile, crbug.com/133915 gestellt wurde.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ratlos war ich, dass zusätzlich zu den mit dem "Emulieren" touch-events" - Kästchen überprüft haben, haben Sie auch die master - "Aktivieren" - Kontrollkästchen aktiviert aktivieren, überschreibt. Sobald beide wurden überprüft, es funktionierte.
Touch-Ereignisse funktionieren in Chrome ab version 21 (nicht sicher über die früheren Versionen), ABER Sie haben zu halten das Developer-Tools-Fenster öffnen, um die für die touch-Ereignisse auftreten. Wenn Sie das Fenster schließen, gehen Sie zurück zur normalen Maus-events.
Einen wichtigen Punkt, den ich bemerkt habe - Checking "Emulieren" touch events" nicht deaktivieren Maus-events, es fügt nur einen Hauch als gut.
Kannst du den code probiert?
Hier ist ein Beispielcode, der mit mir gearbeitet hat, sowohl auf dem iPhone und Chrome 19
Das einzige, was für mich funktioniert ist das Umschalten Emulieren-Touch-Ereignisse gefunden, die in der Emulation > Sensoren in Chrom 45 jedes mal, wenn die Seite neu geladen wird. Dies ist eine ziemlich beschissene Lösung. Hoffe jemand findet eine weniger lästige Problem beheben.
Als der Chrome-69, es gibt keine Overrides Bereich in den Einstellungen, noch einen Emulator Schublade in der Konsole. Stattdessen können Sie auf die
...
- Symbol in der Geräte-Ansicht und wählen Sie dann "Add device-Typ".Während im Responsive-Modus, dies wird Ihnen zeigen, ein wenig dropdown mit den Optionen "Handy", "Handy (kein touch)", "Desktop" und "Desktop (ohne touch)". Wenn Sie es nicht sehen, erweitern Sie die Breite der Geräte-Ansicht. Der Standard für Responsive-Modus ist Mobile (was bedeutet, dass touch-Ereignisse).
Beachten Sie, dass, wenn Sie wählen Sie weitere pre-set-Geräte, der Geräte-Typ wird festgelegt, um Mobil und kann nicht geändert werden. Sie können auch auswählen, welche Geräte-Typ, den Sie möchten, zu emulieren, wenn Sie erstellen ein benutzerdefiniertes Gerät " in den Einstellungen.