Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保留对画布2d上下文的引用可以吗?_Javascript_Canvas_Html5 Canvas - Fatal编程技术网

Javascript 保留对画布2d上下文的引用可以吗?

Javascript 保留对画布2d上下文的引用可以吗?,javascript,canvas,html5-canvas,Javascript,Canvas,Html5 Canvas,保存对画布上下文的长期引用(通过getContext('2d')获得)可以吗?特别是,如果调整画布元素的大小,可能会出现问题吗?如果存在问题,使用从单独的画布节点(如中所述)获得的上下文而不是从DOM派生的上下文是否会有所改进 这个问题的原因是,我需要在幕后进行大量的文本度量计算,我认为维护对上下文的引用将是一个很好的方法。存储对上下文的引用我从来没有遇到过任何问题。调整画布大小不会影响它 规范中似乎没有提到任何关于新上下文的内容 不过,我会仔细看看,以防万一。没有关系,因为上下文引用了画布…@

保存对画布上下文的长期引用(通过
getContext('2d')
获得)可以吗?特别是,如果调整画布元素的大小,可能会出现问题吗?如果存在问题,使用从单独的画布节点(如中所述)获得的上下文而不是从DOM派生的上下文是否会有所改进


这个问题的原因是,我需要在幕后进行大量的文本度量计算,我认为维护对上下文的引用将是一个很好的方法。

存储对上下文的引用我从来没有遇到过任何问题。调整画布大小不会影响它

规范中似乎没有提到任何关于新上下文的内容


不过,我会仔细看看,以防万一。

没有关系,因为上下文引用了画布…@camus-我不确定这与它有什么关系。上下文还涉及其他内容;我关心的是其他东西(可能是屏幕外的位图或系统资源?)。我尝试过这两种情况并对结果进行基准测试了吗?@Dave-我不是问性能,而是问这种做法有多安全,特别是跨浏览器(包括移动浏览器)。在我所做的小测试中,我没有发现一些浏览器(Chrome、FF)存在问题,但这并不意味着很多问题,因为我不知道要测试哪些问题。我希望了解JS引擎内部结构的人能够参与进来。您是否担心安全问题或与bug相关的问题?但正如加缪所说,我不确定这会有什么不同。谢谢。这似乎令人放心。该规范介绍如何使用
newcanvasrenderingcontext2d([width,height])
直接创建上下文。我认为这可能是一种更清晰的获取上下文的方法。然而,当我试图在控制台中调用它时,Chrome和FF抛出“TypeError:非法构造函数”,IE 9抱怨“对象不支持此操作”。这个功能真的可以使用吗?我怀疑。从未在任何地方使用或提及过。尽管CanvasRenderingContext2D是在WebKit中公开的,但我发现它甚至不是从函数继承的(
CanvasRenderingContext2D函数的实例
false
,因此没有
调用
应用
)。然而,规范似乎建议可以将
canvasrendingcontext2d
用作构造函数,在这种情况下,它“返回一个未绑定的canvasrendingcontext2d对象,其中包含一个隐含的位图”-