2010-01-17 3 views
1

내 Greasemonkey 스크립트에서 HTML Canvas와 함께 사용하려는 HTMLImageElement에서 핸들을 얻으면 Firefox의 오류 콘솔 에서 다음 오류가 발생합니다. (나는 그것을가는 XPCNativeWrapper로 묶여 있기 때문에 그것의 가정) : 나는 그것에서 사용하려고 해요 이미지 객체가 초기 할당은 내가 사용하려고 할 때까지 통해HTML 컨텍스트에서 drawImage()를 사용할 수없는 문제

내 코드에 걸쳐 GM_log() 문을 퍼팅
Error: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) 
     [nsIDOMCanvasRenderingContext2D.drawImage] 

, 내가 추적했다입니다 그것은 HTML 캔버스와 함께.

는 항상는 XPCNativeWrapper에 싸여 : 나는 image.wrappedJSObject으로 참조를 획득하여 HTMLImageElement을 풀어했습니다

[object XPCNativeWrapper [object HTMLImageElement]] 

.

내 캔버스 코드 :

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

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

파이어 폭스가 위의 구성 요소 오류 코드를 던지는 이유가 뭘까요?

+0

을 -이 문제가 발생할 것인가? –

+0

다른 예제 코드를 보면'unsafeWindow.document.createElement ("canvas")'시도했지만 제대로 작동하지 못했습니다. 내 접근 방식을 조금 더 어색하게 바꾸어 AJAX를 통해 MIME 형식을 강제로 이미지를 "text"로 다시 요청하여 이미지 데이터를 읽었습니다. –

+0

'이미지'가 무엇인지 모르기 때문에 어떤 버그도 재현 할 수 없습니다. – NVI

답변

1

나는 Google에서 더 철저히 조사해야합니다.

image.wrappedJSObject; 

작동.

0
var canvas = document.createElement("canvas").wrappedJSObject, 
ctx = canvas.getContext("2d"); 

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

ctx.drawImage(image, 0, 0); 

이것은 내가 한 일입니다. 도움이되기를 바랍니다.

+0

FF 4.0.1에서이 작업을 시도했습니다. 이런 방식으로 만들어진 캔버스 DOM 객체에는 "wrappedJSObject"속성이 없습니다. FF를 사용 했습니까? 어떤 버전입니까? –

+0

Firefox 컨텍스트가 아닌 Greasemonkey 컨텍스트에서 실행해야합니다. – w35l3y

0

방금 ​​같은 문제가있었습니다. 이미지의 절대/전체 URL을 사용하면 오류가 사라졌습니다. 또한, 다른 사람이 지적했듯이, 이미지가 제일 먼저로드되는지, 또는 자바 스크립트에서 먼저 새로운 이미지()를 생성하는지 확인하십시오. 파이어 폭스 3.6.16에 대한

관련 문제