網頁停止行動裝置瀏覽的雙擊縮放功能
2025-08-13
筆記如何透過 html 以及 js 的設定來禁止行動裝置瀏覽器的雙擊縮放功能。
說明
最暴力的設定方式直接在 <head>
中加入以下 meta 標籤:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
但會限制所有縮放功能,包含捏合與雙擊的縮放方式。
如果只是要單純限制雙擊縮放,避免測驗類型的網頁,因為使用者操作速度太快,而發生縮放影響使用體驗,可以透過以下的 JavaScript 來達成:
let lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
const now = new Date().getTime();
if (now - lastTouchEnd <= 300) {
event.preventDefault(); // 阻止雙擊縮放
}
lastTouchEnd = now;
}, false);
在 Vue 中,可以將上述的 JavaScript 代碼放入 mounted
生命週期鉤子中,確保在組件掛載後開始監聽觸控事件:
export default {
name: 'NoDoubleTapZoom',
data() {
return {
lastTouchEnd: 0
};
},
mounted() {
this.handleTouchEnd = (event) => {
const now = new Date().getTime();
if (now - this.lastTouchEnd <= 300) {
event.preventDefault(); // 阻止雙擊縮放
}
this.lastTouchEnd = now;
};
document.addEventListener('touchend', this.handleTouchEnd, false);
},
beforeUnmount() {
document.removeEventListener('touchend', this.handleTouchEnd, false);
}
};
更一勞永逸的方式,直接在 main.js
當中進行設定,這樣所有的 components 都會有效果。
import { createApp } from 'vue';
import App from './App.vue';
const app = createApp(App);
// 全域禁止雙擊縮放
let lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
const now = new Date().getTime();
if (now - lastTouchEnd <= 300) {
event.preventDefault(); // 阻止雙擊縮放
}
lastTouchEnd = now;
}, false);
app.mount('#app');