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对象,其中包含一个隐含的位图”-