Проблемы с использованием HTML Canvas & Greasemonkey не могут нарисоватьImage () в 2D-контексте - PullRequest
1 голос
/ 17 января 2010

В моем скрипте Greasemonkey, когда я получаю дескриптор HTMLImageElement, который я хочу использовать с HTML-холстом, я получаю следующую ошибку в консоли ошибок Firefox (я предполагаю, что это потому, что она заключена в XPCNativeWrapper) :

Error: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) 
       [nsIDOMCanvasRenderingContext2D.drawImage]

Помещая в свой код операторы GM_log(), я проследил объект изображения, который я пытаюсь использовать, от его начального назначения до тех пор, пока я не попытаюсь использовать его с HTML-холстом.

Он всегда упакован в XPCNativeWrapper:

[object XPCNativeWrapper [object HTMLImageElement]]

Я развернул HTMLImageElement, получив ссылку на него с помощью image.wrappedJSObject.

Код моего холста:

var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;

var ctx = canvas.getContext("2d");
ctx.drawImage(image, 0, 0);

Есть идеи, почему Firefox генерирует вышеуказанный код ошибки компонента?

Ответы [ 4 ]

1 голос
/ 17 января 2010

Мне следовало бы более внимательно посмотреть на Google.

image.wrappedJSObject;

Works.

0 голосов
/ 15 июля 2011

Рабочий пример для Firefox 3.6.16 (у меня была похожая проблема):

http://userscripts.org/scripts/review/106800

0 голосов
/ 15 марта 2011

У меня просто была такая же проблема. Ошибка исчезла, когда я использовал абсолютный / полный URL для изображения. Также, как заметил кто-то другой, сначала убедитесь, что изображение загружено, или просто сначала создайте новое изображение () в javascript.

0 голосов
/ 07 августа 2010
var canvas = document.createElement("canvas").wrappedJSObject,
ctx = canvas.getContext("2d");

canvas.width = image.width;
canvas.height = image.height;

ctx.drawImage(image, 0, 0);

это то, что я сделал. надеюсь, это поможет

...