Derzeit gibt es drei unterschiedliche Ereignisse, die möglicherweise ausgelöst werden, wenn sich die Clientgeräte bewegen. Zwei von ihnen konzentrieren sich um Orientierung und die letzte auf Bewegung:
ondeviceorientation
ist bekannt, auf der Desktop-Version von Chrome zu arbeiten, und die meisten Apple-Laptops scheint für diese Arbeit die erforderliche Hardware haben . Es funktioniert auch auf Mobile Safari auf dem iPhone 4 mit iOS 4.2. In der Ereignisbehandlerfunktion können Sie auf alpha
, beta
, gamma
Werte auf den Ereignisdaten zugreifen, die als das einzige Argument für die Funktion bereitgestellt werden.
onmozorientation
wird unter Firefox 3.6 und neuer unterstützt. Auch dies funktioniert auf den meisten Apple-Laptops, könnte aber auch auf Windows- oder Linux-Rechnern mit Beschleunigungsmesser funktionieren. Suchen Sie in der Ereignishandlerfunktion nach Feldern x
, y
, z
auf den Ereignisdaten, die als erstes Argument angegeben werden.
ondevicemotion
ist bekannt, auf dem iPhone 3GS + 4 und iPad (beide mit iOS 4.2) zu arbeiten, und bietet Daten im Zusammenhang mit der aktuellen Beschleunigung des Client-Geräts. Die Ereignisdaten an die Prozedurfunktion übergeben hat acceleration
und accelerationIncludingGravity
, die beide für jede Achse drei Felder: x
, y
, z
Das „erdbebennachweis“ Beispiel-Website eine Reihe von if
Anweisungen verwendet, um herauszufinden, welches Ereignis zu befestigen, um (in einer etwas priorisierten Reihenfolge) und übergibt die Daten an eine gemeinsame tilt
Funktion erhalten:
if (window.DeviceOrientationEvent) {
window.addEventListener("deviceorientation", function() {
tilt([event.beta, event.gamma]);
}, true);
} else if (window.DeviceMotionEvent) {
window.addEventListener('devicemotion', function() {
tilt([event.acceleration.x * 2, event.acceleration.y * 2]);
}, true);
} else {
window.addEventListener("MozOrientation", function() {
tilt([orientation.x * 50, orientation.y * 50]);
}, true);
}
die konstanten Faktoren 2 und 50 verwendet werden, um „align“, um die Messwerte von den beiden letztere Ereignisse mit denen von der ersten, aber diese sind keineswegs präzise Darstellungen.Für dieses einfache "Spielzeug" -Projekt funktioniert es ganz gut, aber wenn Sie die Daten für etwas etwas ernsthafteres verwenden müssen, müssen Sie sich mit den Einheiten der Werte, die in den verschiedenen Ereignissen bereitgestellt werden, vertraut machen und sie mit Respekt behandeln :)
Große Anstrengung, vielen Dank. Denkst du, dass die Antwort 3 Jahre später aktualisiert werden muss? –
@BartekBanachewicz Danke, dass du mich angerufen hast. Ich werde die Antwort auf "Community Wiki" übertragen, in der Hoffnung, dass jemand mit mehr aktuellem Wissen es aktualisieren wird, um den aktuellen Stand der Technik zu reflektieren. –
Ich konnte nicht finden, ob dieser Vorgang die Zustimmung des Benutzers erfordert. Ich wollte keine neue Frage stellen, da es perfekt zu Ihrer Frage passt. Vielleicht können wir das hier hinzufügen? Weiß jemand, ob dies eine ausdrückliche Zustimmung erfordert? Ist dies in allen Browsern und allen mobilen Betriebssystemen der Fall? – Silver