我正在建设一个网站,希望在移动设备上使用jQuery Mobile来执行javascript,但由于并非所有桌面浏览器都支持jQuery Mobile,因此我想附加普通的jQuery。我该如何做到这一点?
或许可以建立一个可能的浏览器类型的枚举,然后根据 window.navigator.userAgent
进行测试?您可以使用像 Modernizr 这样的库来测试功能,但这不会获取实际的浏览器类型。目前还没有(尚未)userAgent 属性来识别浏览器类别(桌面、平板电脑、移动设备等),因此您只能进行愚蠢的 UA 比较。
像 51 Degrees 这样的项目旨在简化此评估过程,但它们会产生隐藏的成本--即,51 Degrees 需要花费超过 10 秒的时间来评估客户端浏览器并相应地重定向。当然,在您的情况下,您想要条件样式--而不是重定向。这表明,window.navigator.userAgent
检查可能适用于类似于 if(true) document.write('<javascript resource />')
的方法。
以下是在客户端执行此操作的一种方法:
<html>
<head>
<script type="text/javascript">
function isMobileDevice() {
var index = navigator.appVersion.indexOf("Mobile");
return (index > -1);
}
function loadJQuery() {
if(isMobileDevice())
document.write("<script type='text/javacript src='"+path_to_mobile_jquery+"'></script>");
else
document.write("<script type='text/javacript src='"+path_to_normal_jquery+"'></script>");
}
</script>
</head>
<body onload="loadJQuery();">
<!-- Content -->
</body>
</html>
您需要在服务器上测试浏览器请求头(User-Agent),然后相应地绑定框架:
例如,请参见http://pgl.yoyo.org/http/browser-headers.php User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.18) Gecko/20110614 Firefox/3.6.18