javascript怎麼實作禁止縮放
javascript实现禁止缩放的方法:1、设置对应浏览器的启动参数来禁止用户缩放页面;2、设置meta来禁止用户缩放页面;3、通过js监听来禁止用户缩放页面;4、禁用“ontouchmove”事件;5、通过多点触摸手势库实现。
本文操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
javascript怎么实现禁止缩放?
javascript浏览器禁止用户放大缩小的五种方法
方案一:设置对应浏览器的启动参数来禁止用户缩放页面
这种方案在自建平台上,自选的指定浏览器上效果是可以的,但是不推荐,比如chrome主要通过设置* { touch-acion : none }来实现禁用缩放的方法,具体方案可自行搜索,我也没有进行相关测试。
touch-acion的参数意义如下:
auto:默认值。浏览器允许一些手势(touch)操作在设置了此属性的元素上,例如:对视口(viewport)平移、缩放等操作。
none:禁止触发默认的手势操作。
pan-x:可以在父级元素(the nearest ancestor)内进行水平移动的手势操作。
pan-y:可以在父级元素内进行垂直移动的手势操作。
manipulation:允许手势水平/垂直平移或持续的缩放。任何auto属性支持的额外操作都不支持。
注:touch-action只支持具有CSS width和height属性的元素。这个限制的目的是帮助浏览器优化低延时的手势操作。对于默认不支持此属性的元素,如这种内联元素,可以给它设置display:block这样的CSS属性来支持width和height。未来W3C规范会将此API扩展到支持所有元素。
方案二:设置meta来禁止用户缩放页面
这是搜索后经常出现的方案,但是现在,这个标签在新的浏览器(比如在ios10+)中已经失效,换言之,对于老版本的浏览器可能有效。
在Android的自带浏览器中(例如华为,魅族,小米)第一次手动缩放时,会提示–再次操作可强制缩放网页—;再次缩放也可以缩放;
这一现象意味着meta标签的失效。在Android的chrome中不可以用户缩放(表现正常)
直接上代码(在.html文件中的
之间添加如下语句):<meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" name="viewport" />
方案三:通过js监听来禁止用户缩放页面
直接上代码:
window.onload=function(){ document.addEventListener('touchstart',function (event) { if(event.touches.length>=2){ event.preventDefault(); } }) document.addEventListener('touchmove',function (event) { if(event.touches.length>=2){ event.preventDefault(); } }) document.addEventListener('touchend',function (event) { if(event.touches.length>=2){ event.preventDefault(); } }) }
其中的event.touches.length是获取当天有几个点击事件同时发生,简单而言,就是有几个手指同时点击了屏幕,以为一般缩放操作都是两个手指以上进行的,所以这里应该满足的条件为event.touches.length>=2。不足之处就是禁用了所有的多点触控的操作。
【推荐:javascript高级教程】
方案四:禁用“ontouchmove”事件
因为缩放屏幕必然跟随着双指的ontouchmove事件,我们在标签内加入禁用该事件的函数event.preventDefault()即可,这招非常暴力,意味着全局无法使用使用滑动、拖动等动作,只接受点击动作。
代码如下——
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ontouchmove="event.preventDefault();"> <head> /****some code***/ </head> <body> /****some code***/ </body> </html>
其中的event.preventDefault()函数将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)。例如,如果 type 属性是 “submit”,在事件传播的任意阶段可以调用任意的事件句柄,通过调用该方法,可以阻止提交表单。注意,如果 Event 对象的 cancelable 属性是 fasle,那么就没有默认动作,或者不能阻止默认动作。无论哪种情况,调用该方法都没有作用。
写到这里,忽然想到,是否只禁用某个
区块的ontouchmove事件,比如:<div ontouchmove="event.preventDefault();"></div>
但这种区块禁用的方式我还没有测试,你可以说我比较懒了,自己去测试吧~~~~
然而还没有得瑟一个月,我就有了这个需求,补充如下,直接上实现代码:
var singleTouchFlag; //多指触控标识符 $("#songList").on("touchstart", function (e) { //引用了jquery库,我所要多指禁止的区域id为“songList” // 判断默认行为是否可以被禁用 console.log("touchstart Entered!!!"); if (e.cancelable) { // 判断默认行为是否已经被禁用 if (!e.defaultPrevented) { e.preventDefault(); } } if (1 == parseInt(e.originalEvent.touches.length)) { singleTouchFlag = true; // do something } else { singleTouchFlag = false; } }); $("#songList").on("touchmove", function (e) { // 判断默认行为是否可以被禁用 if (e.cancelable) { // 判断默认行为是否已经被禁用 if (!e.defaultPrevented) { e.preventDefault(); } } if (singleTouchFlag) { //do something } }); $("#songList").on("touchend", function (e) { // 判断默认行为是否可以被禁用 console.log("touchend Entered!!!"); if (e.cancelable) { // 判断默认行为是否已经被禁用 if (!e.defaultPrevented) { e.preventDefault(); } } if (singleTouchFlag) { //do something } });
方案五:借助于**多点触摸手势库“hammer.js ”**解决
hammer.js 是一个多点触摸手势库,能够为网页加入Tap、Double Tap、Swipe、Hold、Pinch、Drag等多点触摸事件,免去自己监听底层touchstart、touchmove、touchend事件并且写一大堆判断逻辑的痛苦。
hammer.js 不但支持触摸屏设备的浏览器,在桌面浏览器上,也能将鼠标的点击当做触摸,方便开发人员在桌面浏览器上调试。(JS仔在自己的随手背项目里面也用了hammer.js,真心好用)
直接上代码(在.html文件中的
之间添加如下语句):<script src = "http://eightmedia.github.com/hammer.js/hammer.js" > </script> <script> window.onload = function () { var hammerMusicBlock = new Hammer(document.getElementById("musicBlock")); hammerMusicBlock.ontransformstart = function (ev) { ev.preventDefault(); }; // double fingers touchstart hammerMusicBlock.ontransform = function (ev) { ev.preventDefault(); }; // double fingers touchmove hammerMusicBlock.ontransformend = function (ev) { ev.preventDefault(); }; // double fingers touchend } </script>
hammer.js 其他的使用方式简介,直接看代码:
<script src = "http://eightmedia.github.com/hammer.js/hammer.js" > </script> // 先要对监听的DOM进行一些初始化 var hammer = new Hammer ( document . getElementById ( "container" ) ) ; // 然后加入相应的回调函数即可 hammer . ondragstart = function ( ev ) { } ; // 开始拖动 hammer . ondrag = function ( ev ) { } ; // 拖动中 hammer . ondragend = function ( ev ) { } ; // 拖动结束 hammer . onswipe = function ( ev ) { } ; // 滑动 hammer . ontap = function ( ev ) { } ; // 单击 hammer . ondoubletap = function ( ev ) { } ; //双击 hammer . onhold = function ( ev ) { } ; // 长按 hammer . ontransformstart = function ( ev ) { } ; // 双指收张开始 hammer . ontransform = function ( ev ) { } ; // 双指收张中 hammer . ontransformend = function ( ev ) { } ; // 双指收张结束 hammer . onrelease = function ( ev ) { } ; // 手指离开屏幕 hammer.js 还支持jQuery插件的形式调用: <script src = "http://eightmedia.github.com/hammer.js/jquery.hammer.js" > </script> $ ( "#element" ) . hammer ( { // 对DOM进行一些初始化,这里可以加入一些参数 } ) . bind ( "tap" , function ( ev ) { console . log ( ev ) ; } ) ;
暂时总结这五种方案,如果有其他更好的方案,请添加到评论区,谢谢。
以上是javascript怎麼實作禁止縮放的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
