For a map-like tool, I would like to disable the browser zooming feature. (I know that this is generally a bad idea, but for some specific website, it is needed).
I did it successfully by listening the keyboard shortcut CTRL + / CTRL - and adding e.preventDefault()
, etc. But this doesn't prevent from changing the zoom from the browser's Zoom menu.
I tried:
with CSS: zoom: reset;
It works for Chrome (see this page for a working example) but it doesn't work at all on Firefox.
in various questions/answers, I also found
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
but this seems to work for mobile only.
How to prevent zooming cross-browser ?
Giving a meta tag attribute "user-scalable=no" will restrict the user from zooming elsewhere. Prevent zooming all together by adding this meta tag to your head tag. This tells the mobile browser to use the same width scale and will not allow the user to zoom in at all, hence also disables that annoying behavior.
Solution 1Set the window and body to a size that fills the screen-space, without exceeding it. This is why so many people have success with forcing input text-size to 16px; once you do that, its clear that you're WAY zoomed out.
The zoom property in CSS allows you to scale your content. It is non-standard, and was originally implemented only in Internet Explorer. Although several other browsers now support zoom, it isn't recommended for production sites. .zoom { zoom: 150%; }
I haven't really found an "authoritative" answer, meaning a clear statement from browser developers. However, all answers to similar questions I've found (like this one or that one) suggest the same thing - the browser's zoom feature exists for the benefit of the users and some browsers (like Firefox) simply don't allow you, as a website creator, to take this option away from them.
This documentation might shed some light into why allowing authors to disable zoom might be a good idea on mobile devices, but not on desktops.
In short, you might need to prevent mobile devices from initially auto-zooming your website, if you know their calculated auto-zoom will be inappropriate. On desktops, there is no auto-zoom, so when users come to your website, they see it exactly as it was meant to be seen. If they then decide they need to zoom the page, there's no good reason to let you prevent them from doing so.
As for the solutions you've listed:
zoom
is a non-standard property not supported by Firefox, and<meta name="viewport">
is concerned only with devices on which layout viewport and visual viewport are not the same thing, i.e. mobile devices.You can disable zoom in browser when using Ctrl + + or Ctrl + - or Ctrl + mouse wheel up or Ctrl + mouse wheel down with this code.
$(document).keydown(function(event) { if (event.ctrlKey==true && (event.which == '61' || event.which == '107' || event.which == '173' || event.which == '109' || event.which == '187' || event.which == '189' ) ) { event.preventDefault(); } // 107 Num Key + // 109 Num Key - // 173 Min Key hyphen/underscore key // 61 Plus key +/= key }); $(window).bind('mousewheel DOMMouseScroll', function (event) { if (event.ctrlKey == true) { event.preventDefault(); } });
Check a demo here: JSFiddle.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With