我希望移动设备始终显示 640 像素宽的网站,因为否则会破坏设计。(我没有做的设计..)因此我想禁用移动用户的缩放。对我有用的是以下内容:
- 2013 年 10 月 31 日更新
首先,没有 Javascript 就无法做到这一点。您将不得不检查用户代理字符串。因此,我创建了一个 mobile-viewport.js 并在结束标记之前包含了脚本:
function writeViewPort() {
var ua = navigator.userAgent;
var viewportChanged = false;
var scale = 0;
if (ua.indexOf("Android") >= 0 && ua.indexOf("AppleWebKit") >= 0) {
var webkitVersion = parseFloat(ua.slice(ua.indexOf("AppleWebKit") + 12));
// targets android browser, not chrome browser (http://jimbergman.net/webkit-version-in-android-version/)
if (webkitVersion < 535) {
viewportChanged = true;
scale = getScaleWithScreenwidth();
document.write('<meta name="viewport" content="width=640, initial-scale=' + scale + ', minimum-scale=' + scale + ', maximum-scale=' + scale + '" />');
}
}
if (ua.indexOf("Firefox") >= 0) {
viewportChanged = true;
scale = (getScaleWithScreenwidth() / 2);
document.write('<meta name="viewport" content="width=640, user-scalable=false, initial-scale=' + scale + '" />');
}
if (!viewportChanged) {
document.write('<meta name="viewport" content="width=640, user-scalable=false" />');
}
if (ua.indexOf("IEMobile") >= 0) {
document.write('<meta name="MobileOptimized" content="640" />');
}
document.write('<meta name="HandheldFriendly" content="true"/>');
}
function getScaleWithScreenwidth() {
var viewportWidth = 640;
var screenWidth = window.innerWidth;
return (screenWidth / viewportWidth);
}
writeViewPort();
该脚本检查访问者是否有 android(不是 chrome)或 firefox 浏览器。android浏览器不支持width=640和user-scalable=false的组合,而firefox浏览器由于某种奇怪的原因确实有双屏宽度。如果访问者有一个 windows phone IE 浏览器 MobileOptimized 被设置。