Die Lösung mit einer meta
-Tag hat bei mir nicht funktioniert (getestet mit Chrome win10 und safari IOS 14.3), und ich glaube auch, dass die von Jack und anderen erwähnten Bedenken hinsichtlich der Barrierefreiheit beachtet werden sollten.
Meine Lösung besteht darin, das Zoomen nur bei Elementen zu deaktivieren, die durch den Standardzoom beschädigt werden.
Ich habe dies getan, indem ich Ereignis-Listener für Zoom-Gesten registriert habe und mit event.preventDefault()
um das Standard-Zoom-Verhalten des Browsers zu unterdrücken.
Dies muss mit mehreren Ereignissen geschehen (Berührungsgesten, Mausrad und Tasten). Das folgende Snippet ist ein Beispiel für das Mausrad und Pinch-Gesten auf Touchpads:
noteSheetCanvas.addEventListener("wheel", e => {
// suppress browsers default zoom-behavior:
e.preventDefault();
// execution of my own custom zooming-behavior:
if (e.deltaY > 0) {
this._zoom(1);
} else {
this._zoom(-1);
}
});
Hier wird beschrieben, wie man Berührungsgesten erkennt: https://stackoverflow.com/a/11183333/1134856
Ich habe dies verwendet, um das Standard-Zooming-Verhalten für die meisten Teile meiner Anwendung beizubehalten und um ein benutzerdefiniertes Zooming-Verhalten für ein Canvas-Element zu definieren.