小编pim*_*vdb的帖子

使用Web Workers使用本机canvas函数进行绘制

可以将CanvasPixelArray获取的via 发送getImageData到worker脚本,让worker脚本操纵其后台线程中的像素,最后将操作的像素阵列发回.

但是,我使用的是原生画布绘图功能drawImage.这些drawImage调用当前正在阻止UI线程.这会导致按钮重绘速度慢,单击按钮时会出现明显的延迟,这只是为了说明一些缺点.(编辑:现在可以使用ctx.imageSmoothingEnabled = false至少在带有webkit前缀的WebKit上完成一项小改进.)

我想使用Web Workers将绘图从主线程移动到后台线程中.但是,我似乎无法向工作人员发送画布和上下文.

我确实在MDN上发现了这个通知:

注意:像往常一样,后台线程(包括worker)无法操纵DOM.如果后台线程采取的操作需要导致对DOM的更改,则应将消息发送回其创建者以执行该工作.

但是我想按原样离开DOM; 我只是想在canvas元素上绘制东西.这是可能的,还是Web Workers真的只允许计算而不是绘制?

(或者也许可以使用类似drawImage操作CanvasPixelArray而不是在画布上绘制的函数?)

javascript drawimage web-worker html5-canvas

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

结合:CSS中的not()选择器

我正在尝试选择a中的所有tr元素table,除了第三个和第四个.我设法通过使用:

#table tr:not(:nth-child(3)):not(:nth-child(4))
Run Code Online (Sandbox Code Playgroud)

我想结合这些选择器,因为我还有更多的:nth-child条目.像这样的东西,但它不起作用:

#table tr:not(:nth-child(3), :nth-child(4))
Run Code Online (Sandbox Code Playgroud)

确实在jQuery的工作,但不是在CSS.我正在使用Chrome(我只需要它在那里工作).

我无法为这种情况找到组合选择器.如何将选择器与:not

css css-selectors css3

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

我可以在Javascript中定义自定义运算符重载吗?

是否可以在JavaScript中的类型实例之间定义自定义运算符?

例如,假设我有自定义矢量类,是否可以使用

vect1 == vect2
Run Code Online (Sandbox Code Playgroud)

检查是否相等,而底层代码是这样的?

operator ==(a, b) {
    return a.x == b.x && a.y == b.y && a.z == b.z;
}
Run Code Online (Sandbox Code Playgroud)

(当然这是无稽之谈.)

javascript dsl equality vector operator-overloading

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

在Chrome中创建console.log()的快捷方式

因为我很懒,我创建的函数log基本上只是以下的缩写console.log:

function log() {
  console.log.apply(console, arguments);
}
Run Code Online (Sandbox Code Playgroud)

每当我打电话给我时,我会在Google Chrome的开发者工具中看到记录的项目,右侧是记录项目的行号.但是,此行号始终相同,因为实际console.log调用位于代码中的某个特定位置(即我声明上述log函数的位置).

我也尝试过的只是:

var log = console.log;
Run Code Online (Sandbox Code Playgroud)

但这总是会引发错误:Illegal invocation.很奇怪,但我猜这不可能.

如何console.log使用开发者工具显示log调用的行号而不是实际console.log调用的位置来创建快捷方式?

javascript console google-chrome shortcut

26
推荐指数
2
解决办法
8651
查看次数

为什么在isFinite()之后检查!isNaN()?

goog.math.isFiniteNumberGoogle Closure Library中看到了这个功能.它做的是检查给定数字是否有限而不是NaN.

底层代码是:

goog.math.isFiniteNumber = function(num) {
  return isFinite(num) && !isNaN(num);
};
Run Code Online (Sandbox Code Playgroud)

因此,首先它使用本机isFinite函数检查数字是否有限,然后进行额外检查以确保数字未NaN使用isNaN.

但是,isFinite如果参数是,则返回false NaN.那么,检查isNaN提供了哪些优势?

javascript nan google-closure-library

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

使用JavaScript确定字符串是否在base64中

我正在使用该window.atob('string')函数将字符串从base64解码为字符串.现在我想知道,有没有办法检查'string'实际上是否有效base64?如果字符串不是base64,我希望收到通知,以便我可以执行不同的操作.

javascript base64

25
推荐指数
7
解决办法
4万
查看次数

保护Chrome扩展程序中的网站API密钥

我正在使用Remember the Milk网络API构建Chrome扩展程序.为了调用此API中的方法,我需要使用API​​密钥和"共享密钥"密钥签署我的请求.

我担心的是,任何用户都可以破解扩展并提取这些值,如果我将它们包含在已发布的扩展中.这可能会或可能不会对用户造成安全性上升,但他或她当然可以使用/滥用我的API密钥并可能将其撤销.

这是我应该关注的吗?在已发布的JavaScript应用程序中是否有保护此类信息的最佳实践?

javascript security google-chrome-extension

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

可变数量的嵌套for循环

编辑:对不起,但我忘了提到我需要计数器变量的值.所以制作一个循环并不是我害怕的解决方案.

我不确定这是否可行,但我想做以下事情.对于函数,传递数字数组.每个数字都是for循环的上限,例如,如果数组是[2, 3, 5],则应执行以下代码:

for(var a = 0; a < 2; a++) {
     for(var b = 0; b < 3; b++) {
          for(var c = 0; c < 5; c++) {
                doSomething([a, b, c]);
          }
     }
}
Run Code Online (Sandbox Code Playgroud)

因此,嵌套for循环的数量等于数组的长度.有没有办法让这项工作?我正在考虑创建一段代码,将每个for循环添加到一个字符串,然后通过它进行评估eval.然而,我已经阅读过,这eval不应该是一个人的首选,因为它也会产生危险的结果.

这里适合哪种技术?

javascript combinatorics nested-loops

23
推荐指数
2
解决办法
7512
查看次数

为什么(无穷大| 0)=== 0?

我正在摆弄JavaScript中的按位运算符,我发现有一件事值得注意.

按位或运算符返回1作为输出比特,如果两个输入比特中的一个是1.所以x | 0总是返回x,因为| 0没有效果:

  • ( 1 | 0 ) === 1
  • ( 0 | 0 ) === 0

但是,当我计算时Infinity | 0,我得到了0.这在我看来是令人惊讶的,因为通过上面的应该得到Infinity.毕竟,( x | 0 ) === x.

我无法在ECMAscript规范中找到明确定义的位置,因此我想知道究竟是什么意思( Infinity | 0 ) === 0.也许Infinity是存储在内存中的方式?如果是这样,怎么仍然可以做一个| 0操作导致它返回0而不| 0应该做任何事情?

javascript bit-manipulation bitwise-operators infinity bitwise-or

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

如何检测Chrome Inspect Element是否正在运行?

有没有办法检测Chrome Inspect Element窗口是否正在运行?

例如,如果用户点击Chrome中的"检查元素",则该窗口会显示Hello World警告.

那可能吗?

javascript console google-chrome

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