小编pim*_*vdb的帖子

JavaScript中的内存泄漏(Chrome)

我正在调用一个50次的函数,这会做一些昂贵的东西,因为它在<canvas>元素上绘制很多.

它工作得很好,没有任何问题,但我只看了一下内存使用情况,它每秒内存占用1MB.Chrome似乎是垃圾收集,因为它每分钟都会消失,但随后用量再次增长.

我尝试的是return在我的函数中的某些位置放置,以便确定我的函数的哪个部分确切地导致泄漏.我已经能够将其缩减为特定的代码行,之后邪恶的部分来了,但我真的不知道如何解决它.

我的问题是:

  • 有哪些工具可用于有效衡量Chrome中的JavaScript内存泄漏?
  • 将变量设置为null/使用undefined后是否有效,比如处理它们?

如果源代码确实是必要的,我会毫不犹豫地将其发布在这里,但我必须承认它很长,对其他人来说可能有点不可理解.

javascript memory-leaks google-chrome

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

与Canvas Rectangle交互

我的简单HTML页面中有一个canvas元素,它使用context.fillRect() 方法绘制的矩形很少.我需要与这些绘制的矩形进行交互.

我怎么能这样做?如何用这些矩形绑定onclick或onmouseover?

javascript html5-canvas

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

iPad AJAX 30分钟后调出错误

我正在构建一个旨在用于iPad的webapp(保存的书签,视口标签等).webapp每隔2分钟向一个不安全的服务器(例如,没有可以超时的会话cookie)发出AJAX请求(使用jQuery),返回JSON.

但是,30分钟后,请求停止进入服务器,我想停止从iPad发送.我查看了jQuery的错误回调的参数,显示textStatus == "Error"errorThrown == "".是的,没什么errorThrown,这也是我为什么神秘化的部分原因.

我尝试在30分钟后执行用户启动的AJAX调用,返回相同的错误.如果不清楚,javascript仍然在运行:它只是失败的AJAX调用.此外,除了iPad之外,这种行为不会发生在任何地方.

任何想法为什么会发生这种情况,或者如何解决它?

javascript jquery ipad ios

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

这个正则表达式部分添加了什么?

我在jQuery源代码中遇到了这个正则表达式:

...
rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
...
Run Code Online (Sandbox Code Playgroud)

我想知道为什么它相当复杂.我对第二部分背后的原因特别感兴趣:

(?:.*? rv:([\w.]+))?
Run Code Online (Sandbox Code Playgroud)

我做了一些研究,但我无法弄清楚正则表达式的这部分是什么.

(?:)      to match but not capture
.*?       any amount of any character
 rv:      something literal
([\w.]+)  one or more word characters or a dot
?         appear 0 or 1 time
Run Code Online (Sandbox Code Playgroud)

特别是,最后?一点对我来说没有多大意义.如果存在或不存在由第二部分定义的子字符串,则整个第二部分匹配.通过一些反复试验,正则表达式似乎与以下内容不同:

/(mozilla)/
Run Code Online (Sandbox Code Playgroud)

有人可以说明正则表达式的第二部分应该做什么吗?它有什么约束; 什么字符串失败通过/(mozilla)/或反过来?

javascript regex jquery

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

.filter()数组使用另一个数组的元素

我有一系列人的名字以及他们的语言知识.我想要做的是将过滤器传递到语言列并过滤掉任何不匹配的结果.

这是示例数组

   var myArray = [["Steppen", "Spanish Polish"],
                  ["Wolf", "Spanish Polish Tagalog"],
                  ["Amanda", "Spanish"],
                  ["Ada", "Polish"],
                  ["Rhonda", "Spanish Tagalog"]];
Run Code Online (Sandbox Code Playgroud)

传入过滤器,它可以是一种语言,也可以是多种语言.即使过滤器中的一种语言匹配 - 也应该返回结果.因此,例如,"塔加拉族语"的过滤器应该返回 - Wolf和Rhonda."西班牙语波兰语"的过滤器应该归还给所有人 - 西班牙语或波兰语的匹配.

我写了过滤器功能,但由于某种原因它被卡住了,当我通过过滤器"Tagalog"它只迭代到阵列中的第二个单元格(西班牙语波兰语塔加拉族语)并重复多次而不是前进.

我做错了什么,我应该以不同的方式迭代吗?

 var userPassedFilter = new Array();
 userPassedFilter[0] = "Tagalog";

 newArray = consolidatedFilters(myArray, userPassedFilter);
 console.log(newArray);

 function consolidatedFilters(passedArray, passedFilter)
 {
 var filteredArray = passedArray.filter(    
    function(el)
    {
        for (var i = 0; i < passedArray.length; i++)
         {
            console.log("i is " + i);
             for (var j in passedFilter)
            {
                console.log("Passed Filter j " + passedFilter[j]);
                console.log("Passed Array …
Run Code Online (Sandbox Code Playgroud)

javascript arrays filter

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

试图学习递归函数,但无法绕过它

我正在尝试学习如何使用递归函数,但我不了解发生了什么.

function power(base, exponent) {
    return base * power(base, exponent - 1);
};

alert(power(4,4));
Run Code Online (Sandbox Code Playgroud)

我越来越:

RangeError:超出最大调用堆栈大小.

从我要离开的例子来看,它有:

function power(base, exponent) {
  if (exponent == 0)
    return 1;
  else
    return base * power(base, exponent - 1);
}

alert(power(4,4));
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么需要if语句吗?我怀疑我错过了什么.

javascript recursion

8
推荐指数
2
解决办法
1221
查看次数

如何在画布中旋转一个图像?

我正在制作一个HTML5画布游戏,我希望旋转其中一个图像.

var link = new Image();
link.src='img/link.png';
link.onload=function(){
    ctx.drawImage(link,x,y,20,20); // draws a chain link or dagger
}
Run Code Online (Sandbox Code Playgroud)

我希望旋转此图像.旋转图像的标准方法是在画布上下文对象上设置旋转.但是,这会旋转整个游戏!我不想这样做,只希望旋转这一个精灵.我怎么做?

javascript rotation html5-canvas

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

使用JavaScript禁用水平滚动

有谁知道是否有办法使用JavaScript禁用水平滚动条?

我不想用overflow-x: hidden;.

html javascript css jquery

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

刚刚创建的jQuery空div没有文件片段作为父级

使用时在jQuery中创建新的html节点

$('<some-node>some html code</some-node>');
Run Code Online (Sandbox Code Playgroud)

在你附上它之前它不会成为DOM的一部分.但是,这并不意味着节点没有父节点.

如果节点创建为空,例如:

var myNewNode = $('<div>Hello</div>');
Run Code Online (Sandbox Code Playgroud)

您可以检查父母:

myNewNode[0].parentNode; // Who is the parent?
Run Code Online (Sandbox Code Playgroud)

看到你明白了

DocumentFragment
Run Code Online (Sandbox Code Playgroud)

结果.但是,DocumentFragment某些对象类似于documentDOM树的一部分.

奇怪的是现在来了.当你创建一个空节点时,比如

var myNewEmptyNode = $('<div></div>');
Run Code Online (Sandbox Code Playgroud)

并尝试检查其内容

myNewEmptyNode[0].parentNode; // Who is now the parent?
Run Code Online (Sandbox Code Playgroud)

你很惊讶

null
Run Code Online (Sandbox Code Playgroud)

我无法理解这种行为,并在jQuery文档中找不到它.我在尝试调试为什么javascriptMVC mxui模式在空div上失败时发现了它.

我已经在Chromium和Opera中测试过这种行为,因此它似乎与浏览器无关.

有人对此有解释吗?

jquery documentfragment

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

重叠的关键事件

我正在开发一个小的HTML/JavaScript/CSS3项目以获得乐趣.我基本上试图制作一个在浏览器窗口中滚动的轮子.为了控制方向盘,我正在使用光标键的键盘和键控事件(左右转动方向盘,向上和向下滚动它向前或向后).

到目前为止,我的工作效果非常好,但有两个主要的故障.假设我想向前滚动轮子而不停止我想将它向右转一点,然后按住向上键并按右光标键.当我这样做时,它会在注册这两个事件并继续滚动之前暂停一下.

这是问题之一,主要的问题是,一旦我执行了前一个动作然后轮子处于一个理想的角度,如果我放开右光标键,浏览器将两个键都注册为释放并且轮子到达站着不动.这是一个jsFiddle的样子:http://jsfiddle.net/UKqwu/1/.我知道代码很乱,但这是一项正在进行的工作/学习经历,而且我只编写了一个月左右的编程.

无论如何,谢谢你的帮助.目前它只适用于Chrome,据我所知.在这个阶段没有真正困扰修复兼容性问题.

javascript key-events css3

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