目前,TwitterBootstrap 3具有以下响应断点:768px,992px和1200px,分别代表小型,中型和大型设备。
如何使用JavaScript检测这些断点?
我想用JavaScript监听屏幕变化时触发的所有相关事件。并能够检测屏幕是用于小型,中型还是大型设备。
已经做过什么了吗?您有什么建议?
编辑:现在可以通过Bower和NPM使用此库。 有关详细信息,请参见github repo。
您可以使用最新版本(Responsive Bootstrap Toolkit 2.5.0)执行以下操作:
// Wrap everything in an IIFE
(function($, viewport){
// Executes only in XS breakpoint
if( viewport.is('xs') ) {
// ...
}
// Executes in SM, MD and LG breakpoints
if( viewport.is('>=sm') ) {
// ...
}
// Executes in XS and SM breakpoints
if( viewport.is('<md') ) {
// ...
}
// Execute only after document has fully loaded
$(document).ready(function() {
if( viewport.is('xs') ) {
// ...
}
});
// Execute code each time window size changes
$(window).resize(
viewport.changed(function() {
if( viewport.is('xs') ) {
// ...
}
})
);
})(jQuery, ResponsiveBootstrapToolkit);
从2.3.0版开始,您不需要<div>
下面提到的四个元素。
原始答案:
我认为您不需要任何庞大的脚本或库。这是一个相当简单的任务。
在下面插入以下元素</body>
:
<div class="device-xs visible-xs"></div>
<div class="device-sm visible-sm"></div>
<div class="device-md visible-md"></div>
<div class="device-lg visible-lg"></div>
这4个div允许您检查当前活动的断点。为了方便地进行JS检测,请使用以下功能:
function isBreakpoint( alias ) {
return $('.device-' + alias).is(':visible');
}
现在,仅在最小的断点上执行特定操作即可:
if( isBreakpoint('xs') ) {
$('.someClass').css('property', 'value');
}
在DOM准备就绪后检测更改也非常简单。您需要的是一个像这样的轻量级窗口调整大小侦听器:
var waitForFinalEvent = function () {
var b = {};
return function (c, d, a) {
a || (a = "I am a banana!");
b[a] && clearTimeout(b[a]);
b[a] = setTimeout(c, d)
}
}();
var fullDateString = new Date();
一旦配备了它,就可以开始侦听更改并执行特定于断点的功能,如下所示:
$(window).resize(function () {
waitForFinalEvent(function(){
if( isBreakpoint('xs') ) {
$('.someClass').css('property', 'value');
}
}, 300, fullDateString.getTime())
});
问题内容: 我的控制器中有以下代码: 在我的RSpec控制器测试中,我想验证某个场景确实收到了成功的json响应,因此我有以下内容: 尽管在运行测试时出现以下错误: 我是否检查响应不正确? 问题答案: 您可以检查响应对象并验证它是否包含期望值: 编辑 将此更改为a 会比较麻烦。这是一种处理方法: 请注意,它不会响应,因此需要一个或真实的模型实例。
问题内容: 我有一个AJAX请求,期望以JSON作为响应。 但是有可能返回的内容可能不是JSON,而是HTML错误页面(不幸的是,响应类型为200)。 如何确定响应是否为JSON? (如果有帮助,我正在使用jQuery。但是我不能使用任何插件。) 问题答案: 好吧,如果您使用的是jQuery并指定了对调用的属性,那么jQuery将尝试解析JSON,如果不是,则JSON应该调用回调。 编辑 对于不使
问题内容: 如何使用Javascript 检测+ ,+ ? 我需要限制粘贴到我的文本区域中,最终用户不应复制和粘贴内容,用户只能在文本区域中键入文本。 如何实现呢? 问题答案: 我只是出于兴趣而这样做。我同意这是不正确的事情,但我认为它应该是OP的决定......另外,代码可以很容易地扩展到增加功能,而不是把它拿走(如更先进的剪贴板,或+ 触发服务器-端保存)。 还要澄清一下,该脚本需要jQuer
下面是我的控制器代码: 上面的代码给了我一个例外:
问题内容: 有没有一种方法可以适用于所有浏览器? 问题答案: 原始答案 是。 更新 要获得移动设备的原始分辨率,您必须乘以设备像素比率:和。比率也为1的台式机也可以使用。 从本(Ben)得到另一个答案: 在原始JavaScript中,这将为您提供可用的宽度/高度: 对于绝对宽度/高度,请使用:
问题内容: 如何检测用户是否没有使用JavaScript或PHP使用任何浏览器Chrome,Firefox或Internet Explorer? 问题答案: 我发现在JS中执行此操作的最佳方法是在Quirksmode上。我为PHP制作了一个应与常见浏览器一起使用的PHP: