响应式JavaScript:仅针对较小的设备宽度执行代码

时间:2013-08-14 16:42:13

标签: javascript jquery twitter-bootstrap responsive-design

我有一些简单的JavaScript(嵌入在一个事件中),我只想为小型设备启动。电话等...

目前我正在做

if ($(window).width() < 606) {
  do_things();
}

但这感觉很笨拙。有没有办法只为小于某个断点的设备执行此操作(除了设置一个早期的变量)?理想情况下适用于我的CSS断点。

我正在使用Bootstrap,因此可能有一个简单的选项可以利用它。

1 个答案:

答案 0 :(得分:4)

您的代码可能看起来很粗糙,实际上这简直就是媒体查询的内容。如果你查看responsive.js的源代码(JS lib,它为旧版浏览器添加了媒体查询支持),它包含了这个函数:

function getDeviceWidth() {
    if (typeof (window.innerWidth) == 'number') {
        //Non-IE
        return window.innerWidth;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        return document.documentElement.clientWidth;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
        return document.body.clientWidth;
    }
    return 0;
}

虽然这是检测设备宽度的一种更完整的方法(并且它与onResize事件处理程序结合使用以检测诸如旋转之类的事情),但它基本上就是你正在做的事情。