首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >NS_ERROR_NOT_AVAILABLE:组件不可用

NS_ERROR_NOT_AVAILABLE:组件不可用
EN

Stack Overflow用户
提问于 2013-06-12 00:27:35
回答 2查看 58.7K关注 0票数 26

我有个问题。我正试着在画布上画一幅画。图像不是来自HTML页面,而是位于一个文件中。下面是我使用的代码:

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

现在,问题来了。这似乎在火狐和IE10上不起作用(我还没有在其他浏览器上测试过)。在Firefox (21)上,我得到:

[19:09:02.976] NS_ERROR_NOT_AVAILABLE: Component is not available @ file:///D:/Watermellon/scripts/base-classes.js:14

在IE10上,我得到了:

SCRIPT16389: Unspecified error. 
base-classes.js, line 14 character 13

这些文件及其目录是:

root/index.html  
root/scripts/base-classes.js  
root/images/logo.jpg 

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

EN

回答 2

Stack Overflow用户

发布于 2013-06-12 00:29:31

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

var img = new Image();
img.src = "/images/logo.jpg";
img.onload = function () {
  this._canvas.drawImage(img, 300, 300);// this is line 14
}
票数 5
EN

Stack Overflow用户

发布于 2015-03-04 02:17:18

我猜这里的问题是,当资源可用时?,但有一种方法可以确认资源可用,只需检查图像对象的'complete‘属性。

if (img.complete == true){
   // is available.
} else {
   // wait until is ready.
}

此外,您还可以使用onload事件和delay方法来创建一个merge方法来检查这两个东西。

var img = new Image();
//first attach handler
img.onload = function(e){
   if (e.target.complete == true) {
            yourHandler(e);
        } else {               
            var maxTimes = 10;
            var countTimes = 0;
            function retryLoadImage() {
                setTimeout(function () {
                    if (countTimes > maxTimes) {
                        // -- cannot load image.
                        return;
                    } else {
                        if (e.target.complete == true) {
                            yourHandler(e);
                        } else {
                            retryLoadImage();
                        }
                    }
                    countTimes++;
                }, 50);
            }; 
        }
};
img.src = yourSource;

这对我很有效!在IE和FF上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17049176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档