12

我有一个必须在移动设备上正确显示的网页。为此,我在页面头部加载了 JQuery Mobile 脚本。头部标签如下所示:

<head> 
    <title>Page Title</title> 

    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>
</head>

并在页面的 body 元素中使用 data-role 属性来显示事物。这些页面在移动设备上看起来相当不错,但即使请求来自非移动浏览器,它看起来也很相似。

我想知道是否有人知道仅当请求来自移动设备时才加载 JQuery Mobile 脚本的方法。

到目前为止我尝试的是使用一个检测我的用户代理并加载脚本的功能,如果它是移动设备:

function init() {

    if(isMobile()) {
        document.write('<link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.css" />');
document.write('<script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>');
dcument.write('<script src="http://code.jquery.com/mobile/1.1.0/jquery.mobile-1.1.0.min.js"></script>');
    }
}


function isMobile() {

    if(navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/iPhone|iPad|iPod/i) || navigator.userAgent.match(/IEMobile/i))
            return true;
        return false;
}
4

2 回答 2

14

很难检测您的设备是移动设备还是平板电脑还是带有触摸功能的大屏幕,但首先

  1. 使用脚本从http://detectmobilebrowsers.com/检测
  2. 使用http://yepnopejs.com/进行测试

像这样(应该适用于来自http://detectmobilebrowsers.com/的 jQuery 脚本):

yepnope({
  test : jQuery.browser.mobile,
  yep  : 'mobile_specific.js',
  nope : ['normal.js','blah.js']
});

编辑:

另请查看https://github.com/borismus/device.js,以根据条件加载内容。我不确定它是否允许您加载条件 JS 文件。

于 2012-07-05T11:16:55.147 回答
2

如何确定是否使用基于设备宽度的移动布局,例如 Twitter Bootstrap 等 CSS 框架?这样,您可以使用 jQuery mobile 为小型设备设计,而使用 vanilla jQuery 为其他设备设计?我认为使用 yepNope 或类似的测试仍然适用。

于 2012-10-19T15:37:53.143 回答