我是网络开发的新手,所以这可能是一个愚蠢的问题。如果已经回答,请告诉我。)
根据OffscreenCanvas
的{{1}},目前,API仅支持WebGL上下文。 (也许它只是意味着工作者对OffscreenCanvas
'2d上下文的支持没有实现,但是我们仍然可以在主线程上使用它?)
注意:此API目前是针对WebGL1和WebGL2上下文实现的 只要。有关工作人员的Canvas 2D API支持,请参阅MDN web docs' page。
但是当我为OffscreenCanvas
阅读bug 801176时,支持2d上下文。
enum OffscreenRenderingContextType {“2d”,“webgl”};
我怀疑第二个只是OffscreenCanvas
应该支持的提案,第一个是实际支持的内容。我的理解是否正确?如果是这样,我怎么知道特定浏览器是否支持OffscreenCanvas
的2d上下文,如Chromium?
让我更加困惑的是,人们称之为常规canvas
和offscreenCanvas
,并从中获取第二个上下文(the HTML Specs,example1)。但我想在这种情况下,他们只是引用一个没有附加到DOM的常规画布,而不是我想要研究的OffscreenCanvas
。
答案 0 :(得分:2)
我怀疑第二个只是
OffscreenCanvas
应该支持的提案,第一个是实际支持的内容。我的理解是否正确?
正确,WHATWG规范是浏览器应该支持的标准。 Firefox#801176存在的原因是因为Firefox不符合WHATWG规范在该领域的要求。
让我更加困惑的是人们称之为常规
canvas
和offscreenCanvas
这些只是名为offscreenCanvas
的变量,它包含普通画布。您可以将变量命名为任何名称;这些作者为当前未在屏幕上呈现的画布选择了一个描述性名称。
答案 1 :(得分:1)
看起来OffscreenCanvas
将在Chrome 69或Chrome 70中发布,支持2D和WebGL。对于图像,您可以在工作人员中使用fetch
和ImageBitmap
来下载图像。
您可以看到how to use OffscreenCanvas
on MDN。
OffscreenCanvas对2d上下文的支持状态是什么?
状态首先是默认情况下,截至2018/04/30,在Chrome 66或Firefox 59中,Firefox或Chrome中未提供OffscreenCanvas支持。目前Chrome Canary 68中既没有开启,也没有开启Firefox每晚,因此不太可能在未来几个月启用。
My own tests表明,如果启用实验性支持,WebGL可以在Chrome中运行,但不适用于Firefox,并且既不支持2D上下文也是如此。由于规范必须改变,因此2D上下文更成问题。例如ctx.drawImage(someImage, ...)
对OffscreenCanvas
毫无意义,因为OffscreenCanvas
实际上是在工作者中使用但工作者中没有Images
,因为这些是DOM对象。 WebGL部分解决了这个问题,因为有一些方法可以将纹理更新为不涉及图像的WebGL。
整个问题实际上是一种猜测。如果您想知道Firefox或Chrome或Safari或Edge何时发货OffscreenCanvas
并获得2d支持,您可以做的最好的事情就是挖掘他们的错误跟踪器。我相信规范可能会改变,就好像你在网上搜索一样,你仍然可以讨论OffscreenCanvas应该如何工作,并涵盖像WebVR这样的案例以及它目前还不能很好地覆盖的其他案例。