小编Dan*_*J F的帖子

flot - 显示没有间隙的时间轴

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

破碎的flot

它显示了两天的数据,我打赌你发现了一夜.我想要做的是摆脱图表中间这个恼人的差距.有什么建议怎么做?

jquery jquery-plugins flot

12
推荐指数
1
解决办法
4291
查看次数

QUnit中有spyOn类似物吗?

我正在编写针对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编写此测试?

javascript unit-testing qunit spy jasmine

12
推荐指数
1
解决办法
3002
查看次数

如何在IE中加载脚本?

只能在带有条件注释的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.

javascript internet-explorer conditional-comments

10
推荐指数
2
解决办法
2万
查看次数

使用CSS进行图像缩放

我现在并不需要它,但出于好奇......

假设我们有一个流畅的网站布局,在1920px显示器和小型智能手机上运行良好.现在让我们说我们有图像,显然(显然?)我们想要缩放它们.我们在服务器上上传了2560px图像(因为现在谁在乎带宽)并将width: 100%属性设置为img标签.

所以我们有两个用户:一个拥有1920px显示器的程序员,让我们称他为Jo,一个带智能手机的女学生,让我们称她为Nancy(因为南希的一切都好,对吧?).

乔和南希很高兴,因为我们的计划使用图像缩放width: 100%工作,但如果我们决定显示小图像,如400px宽度?南希不会注意到什么,但对乔来说,这将是一场灾难.

所以问题是:我们可以在不使用JavaScript的情况下让Jo和Nancy满意吗?

css responsive-design

10
推荐指数
1
解决办法
4万
查看次数

当前时间早于之前节省的时间

我的假设是时间总是向前发展,但显然有时它不会以这种方式发生.

我有以下示例:

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).

javascript time

8
推荐指数
1
解决办法
134
查看次数

Safari不会跨不同域缓存资源

假设我们有几个不同的网站:website1.com,website2.com,website3.com.我们在所有这些上使用jQuery,并将其包含在像googleapis.com这样的CDN中.浏览器的预期行为是将其缓存一次并将其用于所有其他网站.Chrome似乎是这样做的,但Safari会为每个域下载jQuery.

  1. 使用下面给出的JS代码在Chrome 中打开nytimes.com,bbc.comdw.de.
  2. 在第一个网站上添加jQuery,然后查看DevTools的Network选项卡.它会说它有jQuery.
  3. 现在打开任何其他网站并再次附加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获取每个新域(但不是子域)的图像.

safari caching cdn browser-cache google-cdn

7
推荐指数
2
解决办法
1661
查看次数

如何围绕块/图像包装列表?

我试图围绕一个块包装列表,IE不会让我的生活更轻松.

该块浮动在左侧,因此我希望列表位于右侧.虽然它适用于所有浏览器,但它在IE中看起来相当丑陋,因为IE将文本放在右侧,将子弹放在图像的左侧.

看看这个例子:http://jsfiddle.net/xA9n8/

如何解决这个问题?

UPD:我在IE9中测试过它.

css list css-float internet-explorer-9

5
推荐指数
2
解决办法
8447
查看次数

Firefox 扩展自动安装

我正在创建一个 Firefox 扩展,并且有一个包含该扩展文件的文件夹。每次我想测试时,我都必须压缩它,将扩展名更改为.xpi,将其拖放到Firefox窗口,等待3秒钟,单击安装按钮并重新启动浏览器。

我制作了一个批处理文件来压缩文件夹并更改扩展名,但是是否可以使用脚本完全重新安装它,而不需要拖放例程?

firefox firefox-addon

4
推荐指数
1
解决办法
4572
查看次数

画布:使绘图适合画布大小而不改变坐标

假设我们正在画布上动态绘制分形。由于我们不知道分形有多大,因此在某些时候我们需要缩放(缩小)画布以适应分形。

我们该怎么做呢?如何缩放:

  1. 正确,以便它完全符合我们的图纸,并且
  2. 这样坐标保持不变,并且我们的分形计算不需要使用比例值(意思是,return x,不是return x * scale,如果可能的话)
  3. 如果分形向各个方向生长并且我们有负值怎么办?

请参阅下面的小示例。

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)

javascript canvas html5-canvas

2
推荐指数
1
解决办法
1047
查看次数

如何在函数中设置全局变量

我读了类似的主题,但找不到答案.

这是代码:

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)

它不会起作用.为什么以及如何做到这一点?

javascript

1
推荐指数
1
解决办法
2447
查看次数

是$('.foo').eq(0)比$('.foo')快吗?

假设我有一个庞大的元素列表,其结构如下:

<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 performance jquery

0
推荐指数
1
解决办法
206
查看次数