客户端代码我的应用程序遇到了您遇到的最严重的错误:间歇性错误。
基本上,我的系统会检索属于特定年龄段的用户。通过html按钮请求每个年龄组。单击该按钮时,将通过ajax请求检索用户,然后向下滑动区域以显示这些特定用户。
以下是单击按钮时触发的代码段:
$.getJSON('/users/' + age_group {
$.each(data, function(index, value){
users.push(value.name);
});
$(area).empty();
$.each(users, function(index, value){
$(area).append("<div> <span class = 'pull-left user unstyled'></span>" + value + '</div>');
});
}).done(function(){
$(area).stop().slideDown(200, function(){
$('body').click(function(ev){
$(area).stop().slideUp(200)
});
});
});
令人沮丧的是99%的时间,$(area)
div向下滑动显示正确的数量以显示所有用户(由slideDown
功能提供),但这一次是它没有完全滑动,附加的用户弹出$(area)
div并且整个布局中断。
我可以设计一个解决方法(可能overflow: hidden
上$(area)
;至少布局不会破坏)但事情是这个错误是间歇性的。真的是一百次。
我的应用程序使用capybara rspec selenium堆栈来运行集成规范,我已经在firefox中看到了几次bug错误(在相同的规范中它根本没有出现),所以可以使用堆栈来找出导致此错误的原因?您如何检测布局是否已损坏?所有元素都出现在页面上? 也许div高度?如果检索到x个结果,我可以测试'$(area)'div的高度以确保它的高度= y?该错误似乎是完全随机的。使用rspec,我可以创建某种html日志,数据库并保存屏幕截图(我认为你可以用selenium做到这一点)只有当高度是一个意想不到的值时?
这是行业惯例吗? Jquery是目前网页设计中最棘手的领域,然而谷歌搜索“jquery行为驱动的开发”并没有产生太大的影响。是否使用rspec来测试jquery代码?或者还有其他一些宝石吗?
公平地说,这不是问题的标题,但如果有人能告诉我他们为什么认为这种情况发生,我将永远感激不尽?这是一个jquery bug吗?已知slideDown
方法偶尔不会滑下来吗? 是什么让我认为这是一个jquery错误的事实是,有时候$(area)
div不仅不会滑下来,而是下滑到最后一组请求用户的高度,好像那样变量已被jquery以某种方式缓存。
结论:
slideDown
函数中的小故障?