我正在尝试自定义jQuery Flot以消除时间轴上点之间的间隙.看看顶部图片:

它显示了两天的数据,我打赌你发现了一夜.我想要做的是摆脱图表中间这个恼人的差距.有什么建议怎么做?
我正在编写针对Jasmine和QUnit的不同测试用例的规范来比较它们,在我需要编写测试以检查事件是否绑定到元素之前它们看起来相同.
事件绑定看起来像
$('.page').live('click', function() { page_clicked( $(this) ) });
Run Code Online (Sandbox Code Playgroud)
page_clicked 是一个私有方法,但它需要另一个模块的公共方法.
这是一个茉莉花规格:
it('should bind events to pages', function() {
spyOn( search, 'get_results' );
$('.page:eq(0)').trigger('click');
expect( search.get_results ).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)
这个测试工作.现在我正在尝试为QUnit编写相同的测试,但找不到与spyOn类似的任何内容.如何为QUnit编写此测试?
只能在带有条件注释的IE中加载脚本
<!--[if lte IE 7]>
<script type="text/javascript" src="somescript.js"></script>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
但是,如果我有什么不希望将其加载到IE 7 LTE(但仍需要它的所有其他浏览器)?
有什么简单的解决
PS我有一个SyntaxHighlighter的问题 - 太多的代码减慢了IE7的速度,因为我的时间不够,我决定暂时把它关掉IE7.
我现在并不需要它,但出于好奇......
假设我们有一个流畅的网站布局,在1920px显示器和小型智能手机上运行良好.现在让我们说我们有图像,显然(显然?)我们想要缩放它们.我们在服务器上上传了2560px图像(因为现在谁在乎带宽)并将width: 100%属性设置为img标签.
所以我们有两个用户:一个拥有1920px显示器的程序员,让我们称他为Jo,一个带智能手机的女学生,让我们称她为Nancy(因为南希的一切都好,对吧?).
乔和南希很高兴,因为我们的计划使用图像缩放width: 100%工作,但如果我们决定显示小图像,如400px宽度?南希不会注意到什么,但对乔来说,这将是一场灾难.
所以问题是:我们可以在不使用JavaScript的情况下让Jo和Nancy满意吗?
我的假设是时间总是向前发展,但显然有时它不会以这种方式发生.
我有以下示例:
var LOOP_MS = 100;
var prevCall = +new Date();
setTimeout(function loop() {
foobar();
setTimeout(loop, LOOP_MS);
}, LOOP_MS);
function foobar() {
var now = +new Date(),
diff = now - prevCall; // expected to be somewhere around LOOP_MS
// do stuff
console.log(diff);
prevCall = now;
}
Run Code Online (Sandbox Code Playgroud)
现在,大部分时间它按预期工作,并diff显示接近100的数字.当然,在现实生活中,我希望数字上升,特别是当用户的计算机执行一些繁重的操作时.
我不指望的是看到一个负数,但它发生了.怎么可能?我错过了什么吗?我想也许它可能是由不同的时区造成的,但事实并非如此.我也在不同的浏览器(Chrome,Firefox,Safari)中看到它,并且diff值非常不一致:从-9到-100 000.
它发生在大约0.025%的生产案例中,所以这不是一个大问题,但我想知道它究竟是如何发生的(甚至在理论上)?
我认为通过在慢速VM中运行脚本并模拟高CPU负载,我设法在本地重现了几次,但我仍然不明白为什么函数会显示负数(意思now是,比旧版本更长prevCall).
假设我们有几个不同的网站:website1.com,website2.com,website3.com.我们在所有这些上使用jQuery,并将其包含在像googleapis.com这样的CDN中.浏览器的预期行为是将其缓存一次并将其用于所有其他网站.Chrome似乎是这样做的,但Safari会为每个域下载jQuery.
例
但是,Safari会说它正在为每个域加载jQuery,但是尝试在其中一个域上打开任何网页并再次附加脚本 - 你会看到现在它说它从缓存中获得了jQuery.所以看起来它缓存了域的数据,即使它已经从另一个域的确切URL下载了资源.
这个假设是否正确,如果是,如何解决?
您可以复制/粘贴的代码:
setTimeout(function() {
var SCRIPT_SRC = '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js';
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = SCRIPT_SRC;
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}, 0);
Run Code Online (Sandbox Code Playgroud)
UPD:用静态图像测试它.
test.com,test2.com和test3.com都有<img src="http://image.com/image.jpg" />.在除Safari之外的所有浏览器中,日志仅显示一个 - 首先 - 请求图像.Safari获取每个新域(但不是子域)的图像.
我试图围绕一个块包装列表,IE不会让我的生活更轻松.
该块浮动在左侧,因此我希望列表位于右侧.虽然它适用于所有浏览器,但它在IE中看起来相当丑陋,因为IE将文本放在右侧,将子弹放在图像的左侧.
看看这个例子:http://jsfiddle.net/xA9n8/
如何解决这个问题?
UPD:我在IE9中测试过它.
我正在创建一个 Firefox 扩展,并且有一个包含该扩展文件的文件夹。每次我想测试时,我都必须压缩它,将扩展名更改为.xpi,将其拖放到Firefox窗口,等待3秒钟,单击安装按钮并重新启动浏览器。
我制作了一个批处理文件来压缩文件夹并更改扩展名,但是是否可以使用脚本完全重新安装它,而不需要拖放例程?
假设我们正在画布上动态绘制分形。由于我们不知道分形有多大,因此在某些时候我们需要缩放(缩小)画布以适应分形。
我们该怎么做呢?如何缩放:
return x,不是return x * scale,如果可能的话)请参阅下面的小示例。
var $canvas = document.querySelector('canvas'),
ctx = $canvas.getContext('2d'),
lastX = 0,
lastY = 0;
drawLoop();
function drawLoop() {
var newX = lastX + 30,
newY = lastY + 30;
ctx.beginPath();
ctx.moveTo(lastX, lastY);
ctx.lineTo(newX, newY);
ctx.stroke();
lastX = newX;
lastY = newY;
setTimeout(drawLoop, 1000);
}Run Code Online (Sandbox Code Playgroud)
<canvas width="100" height="100" style="border: 1px solid #ccc;"></canvas>Run Code Online (Sandbox Code Playgroud)
我读了类似的主题,但找不到答案.
这是代码:
foo_arr = ["a", "b", "c"]
bar_arr = ["x", "y"]
test(bar_arr);
document.write(bar);
function test(arr_name) {
bar = Math.random()*arr_name.length;
if (bar < 1) {test(arr_name)}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我将数组名称传递给函数,但是如果我还需要传递变量呢?例如
test(bar, bar_arr);
function test(var_name, arr_name) {
var_name = Math.random()*arr_name.length;
Run Code Online (Sandbox Code Playgroud)
它不会起作用.为什么以及如何做到这一点?
假设我有一个庞大的元素列表,其结构如下:
<div class="item">
<div class="header"></div>
<div class="body"></div>
<div class="meta"></div>
<div class="..."></div>
...
</div><!-- .item -->
Run Code Online (Sandbox Code Playgroud)
我已经找到了一个元素,现在我必须找到一个'.body'.哪些代码可以更快地运行:
$(el).find('.body')
Run Code Online (Sandbox Code Playgroud)
要么
$(el).find('.body').eq(0)
Run Code Online (Sandbox Code Playgroud)
换句话说,jQuery会在第一个找到的元素上停止,还是先循环遍历所有元素,然后它才会返回一个带有所选索引的元素?
javascript ×6
css ×2
jquery ×2
caching ×1
canvas ×1
cdn ×1
css-float ×1
firefox ×1
flot ×1
google-cdn ×1
html5-canvas ×1
jasmine ×1
list ×1
performance ×1
qunit ×1
safari ×1
spy ×1
time ×1
unit-testing ×1