Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 JS canvas getContext然后transferControlToOffscreen_Javascript_Canvas - Fatal编程技术网

Javascript JS canvas getContext然后transferControlToOffscreen

Javascript JS canvas getContext然后transferControlToOffscreen,javascript,canvas,Javascript,Canvas,工作代码: var canvas = document.createElement('canvas'); var offscreen = canvas.transferControlToOffscreen(); 使用.getContext()时: 进一步的尝试也不起作用: var canvas = document.createElement('canvas'); var ctx = canvas.getContext('2d'); delete ctx; var offscreen = ca

工作代码:

var canvas = document.createElement('canvas');
var offscreen = canvas.transferControlToOffscreen();
使用
.getContext()时

进一步的尝试也不起作用:

var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
delete ctx;
var offscreen = canvas.transferControlToOffscreen();
即便如此:

var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
ctx.reset();
delete ctx;
var offscreen = canvas.transferControlToOffscreen();
使用
webgl
而不是
2d

那么,我如何才能得到画有东西的画布的屏幕外图像,然后将其发送给工作人员呢?或者我必须使用类似于
getImageData()
的方法,将结果与全新画布的屏幕外一起发送,并让工作人员使用
putImageData()
进行复制吗?我不想做这些额外的操作(因为它会运行得更慢)

另一种方法是使用
cloneNode()
,但不会复制画布图像

我仔细研究了画布和上下文的所有方法,但似乎没有任何方法可以解决这个问题


我正在使用FF 67并启用屏幕外功能。我认为Chrome没有什么不同。

很简单:您无法从具有渲染上下文的画布转移控制

但你可以:

const canvas = new OffscreenCanvas(100, 1);
const ctx = canvas.getContext('2d');
Wich与执行以下操作相同:

var canvas = document.createElement('canvas');
var offscreen = canvas.transferControlToOffscreen();
var ctx = offscreen.getContext('2d');
在所有操作结束时,您将
传输到图像位图

var bitmap = offscreen.transferToImageBitmap();

希望这有帮助

好的,谢谢。但在FF中,它抛出
[Exception…”方法未实现“nsresult:”0x80004001(NS_ERROR_not_implemented)”位置:“JS frame::debugger eval code::::第3行”数据:否]
。我会在Chrome上试用,如果我能让它工作,我会选择它作为回答你在使用什么浏览器,等等?FF 67,正如我在问题中提到的那样,你是如何启用默认禁用的功能的?(我只是确认一下)。在chromium浏览器上测试怎么样?有吗?Chrome一切都很好,只是FF,通过
about:config启用
var bitmap = offscreen.transferToImageBitmap();