一、兼容电脑端的禁止通过 ctrl + +/- 和 ctrl + 滚轮 对页面进行缩放
const keyCodeMap = { 61 : true , 107 : true , 109 : true , 173 : true , 187 : true , 189 : true , } ;
二、覆盖ctrl||command + ‘+’/‘-’
document. onkeydown = function ( event ) { const e = event || window. event; const ctrlKey = e. ctrlKey || e. metaKey; if ( ctrlKey && keyCodeMap[ e. keyCode] ) { e. preventDefault ( ) ; } else if ( e. detail) { event. returnValue = false ; } } ;
三、覆盖鼠标滑动
document. body. addEventListener ( 'wheel' , ( e ) => { if ( e. ctrlKey) { if ( e. deltaY < 0 ) { e. preventDefault ( ) ; return false ; } if ( e. deltaY > 0 ) { e. preventDefault ( ) ; return false ; } } } , { passive: false } ) ;
四、完整代码示例
window. onload = function ( ) { const keyCodeMap = { 61 : true , 107 : true , 109 : true , 173 : true , 187 : true , 189 : true , } ; document. onkeydown = function ( event ) { const e = event || window. event; const ctrlKey = e. ctrlKey || e. metaKey; if ( ctrlKey && keyCodeMap[ e. keyCode] ) { e. preventDefault ( ) ; } else if ( e. detail) { event. returnValue = false ; } } ; document. body. addEventListener ( 'wheel' , ( e ) => { if ( e. ctrlKey) { if ( e. deltaY < 0 ) { e. preventDefault ( ) ; return false ; } if ( e. deltaY > 0 ) { e. preventDefault ( ) ; return false ; } } } , { passive: false } ) ; var lastTouchEnd = 0 ; document. addEventListener ( 'touchstart' , function ( event ) { if ( event. touches. length > 1 ) { event. preventDefault ( ) ; } } ) ; document. addEventListener ( 'touchend' , function ( event ) { var now = ( new Date ( ) ) . getTime ( ) ; if ( now - lastTouchEnd <= 300 ) { event. preventDefault ( ) ; } lastTouchEnd = now; } , false ) ; document. addEventListener ( 'gesturestart' , function ( event ) { event. preventDefault ( ) ; } ) ;
} ;