有没有办法检测用户是否在 jQuery 中使用移动设备?类似于 CSS @media
属性的东西?如果浏览器在手持设备上,我想运行不同的脚本。
jQuery $.browser
函数不是我想要的。
原文由 superUntitled 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有办法检测用户是否在 jQuery 中使用移动设备?类似于 CSS @media
属性的东西?如果浏览器在手持设备上,我想运行不同的脚本。
jQuery $.browser
函数不是我想要的。
原文由 superUntitled 发布,翻译遵循 CC BY-SA 4.0 许可协议
对我来说,小即是美,所以我正在使用这种技术:
在 CSS 文件中:
/* Smartphones ----------- */
@media only screen and (max-width: 760px) {
#some-element { display: none; }
}
在 jQuery/JavaScript 文件中:
$( document ).ready(function() {
var is_mobile = false;
if( $('#some-element').css('display')=='none') {
is_mobile = true;
}
// now I can use is_mobile to run javascript conditionally
if (is_mobile == true) {
//Conditional script here
}
});
我的目标是让我的网站“适合移动设备”。所以我使用 CSS 媒体查询根据屏幕尺寸显示/隐藏元素。
例如,在我的移动版本中,我不想激活 Facebook Like Box,因为它会加载所有这些个人资料图片和内容。这对移动访问者不利。因此,除了隐藏容器元素外,我还在 jQuery 代码块(上图)中执行此操作:
if(!is_mobile) {
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/pt_PT/all.js#xfbml=1&appId=210731252294735";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
}
您可以在 http://lisboaautentica.com 上看到它的实际效果
我仍在开发移动版本,因此在撰写本文时,它看起来仍不尽如人意。
dekin88 更新
有一个内置的 JavaScript API 用于检测媒体。与其使用上述解决方案,不如使用以下解决方案:
$(function() {
let isMobile = window.matchMedia("only screen and (max-width: 760px)").matches;
if (isMobile) {
//Conditional script here
}
});
浏览器支持: http ://caniuse.com/#feat=matchmedia
这种方法的优点是它不仅更简单和更短,而且您可以根据需要有条件地分别针对不同的设备,例如智能手机和平板电脑,而无需在 DOM 中添加任何虚拟元素。
原文由 Gonçalo Peres 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答928 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
编者注: 用户代理检测不是现代 Web 应用程序的推荐技术。请参阅此答案下方的评论以确认此事实。建议使用特征检测和/或媒体查询使用其他答案之一。
您可以使用简单的 JavaScript 来检测它,而不是使用 jQuery:
或者您可以将它们结合起来,使其更易于通过 jQuery…
现在
$.browser
将为所有上述设备返回"device"
注意:
$.browser
在 jQuery v1.9.1 上被删除。但是您可以通过使用 jQuery 迁移插件 代码 来使用它更彻底的版本: