NS_ERROR_NOT_AVAILABLE:组件不可用

Mar*_*lov 23 javascript canvas

我有个问题.我试图在画布上绘制图像.图像不是来自HTML页面,而是来自文件.这是我使用的代码:

var img = new Image();
img.src = "/images/logo.jpg";
this._canvas.drawImage(img, 300, 300);// this is line 14
Run Code Online (Sandbox Code Playgroud)

现在,这是问题所在.这似乎不适用于Firefox和IE10(我还没有在其他浏览器上测试过).在Firefox(21)上,我得到:

[19:09:02.976] NS_ERROR_NOT_AVAILABLE: Component is not available @ file:///D:/Watermellon/scripts/base-classes.js:14
Run Code Online (Sandbox Code Playgroud)

在IE10上,我得到:

SCRIPT16389: Unspecified error. 
base-classes.js, line 14 character 13
Run Code Online (Sandbox Code Playgroud)

文件及其目录是:

root/index.html  
root/scripts/base-classes.js  
root/images/logo.jpg 
Run Code Online (Sandbox Code Playgroud)

现在,当我将img.src更改为URL(来自另一个站点的图像)时,一切正常,图像在延迟后自行绘制(因为它是从URL获取的).我究竟做错了什么?

Ian*_*Ian 27

我猜测问题是在您尝试使用之前图像尚未加载.试试这个:

var img = new Image();
img.onload = function () {
    this._canvas.drawImage(img, 300, 300);// this is line 14
};
img.src = "images/logo.jpg";
Run Code Online (Sandbox Code Playgroud)

绑定事件src设置该属性,因为缓存的图像事件立即触发(这是IE中的常见问题).load

根据你的结构,图像的路径可能是images/logo.jpg(删除第一个/)

  • 你好我有相同的代码问题,但错误只出现在firefox浏览器中.在其他所有浏览器中工作的地方.firefox有什么特例吗?我试过这段代码,但仍然没有得到任何结果.如果可能请帮助我. (2认同)

mea*_*gar 5

在尝试将其绘制到画布中之前,您需要等待图像加载:

var img = new Image();
img.src = "/images/logo.jpg";
img.onload = function () {
  this._canvas.drawImage(img, 300, 300);// this is line 14
}
Run Code Online (Sandbox Code Playgroud)