【发布时间】:2015-12-12 06:46:19
【问题描述】:
我有一个可以检测 iPhone/iPad 和 Android 设备的脚本,但无法识别台式机/笔记本电脑设备。在 iPhone/iPad 上查看页面时,它首先触发“iDevice”警报,然后触发“Desktop”警报。我需要能够根据用户查看页面的平台(iPhone/iPad、Android、Windows Phone、台式机/笔记本电脑(非移动设备))显示不同的表单。我不是在尝试以分辨率为目标,而是在尝试以 PLATFORM 为目标。
HTML
<div class="iDevice">iDevice</div>
<div class="android-view">Android Device</div>
<div class="desktop">Desktop</div>
Javascript
$("#email").hide();
$(".desktop").hide();
$(".iDevice").hide();
$(".android-device").hide();
$('#checkbox').change(function () {
$('#email').slideToggle();
});
if((navigator.platform === 'iPhone') || (navigator.platform === 'iPad')){
alert("iDevice");
$(".iDevice").show();
$(".android-view").hide();
$(".desktop").hide();
}
var ua = navigator.userAgent.toLowerCase();
var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile");
if(isAndroid) {
alert("Android");
$(".iDevice").hide();
$(".android-view").show();
$(".desktop").hide();
}
else if ((navigator.platform != 'iPhone') || (navigator.platform != 'iPad' ) || (isAndroid === false)){
alert("Desktop");
$(".desktop").show();
$(".iDevice").hide();
$(".android-view").hide();
}
JSFIDDLE:LINK
【问题讨论】:
-
如今,将设备归为特定类别确实是愚蠢的,因为这是一个完整的连续体。手机和平板电脑的分界线在哪里?平板电脑和笔记本电脑的分界线在哪里?空无一人。您可以购买可以是平板电脑的笔记本电脑,也可以购买可以是笔记本电脑的平板电脑。相反,请查看平台具有的功能(屏幕尺寸、触摸等...)并仅根据这些功能调整您的 UI。无论设备属于哪个类别,他们都可以提供可用的 UI。
-
还有,是什么让某些东西无法移动?您是否会以某种方式检测到设备没有电池或没有无线网络,因为现在几乎所有其他东西都以某种方式移动。
-
我的问题的解决方案比这简单得多,@jfriend00。这个想法是用户将根据他们所使用的设备看到不同的表单。它与使设备成为设备的概念无关。它只是“如果此设备在 iOS 上,则显示此表单”,如果此设备是 Android 平台,则显示此表单“,如果用户在台式机/笔记本电脑上,则显示此表单”。我的脚本适用于 iPhone/iPad 和 Android,但在挑选非 android/iOS 设备时遇到问题。我试着说如果设备都不是这些,那么就显示这个。
-
@Matt - 但是,如果它是笔记本电脑、平板电脑和大手机,为什么要显示不同的形式?这种愿望从一开始就是愚蠢的。
标签: javascript navigator