微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 组件返回失败代码:0x80040111(NS_ERROR_NOT_AVAILABLE)

我的问题 :
uncaught exception: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIDOMCanvasRenderingContext2D.drawImage]"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: file:///***************.js :: redrawView :: line 308"  data: no]

产生此行为的代码(tmpImg正在动态加载,因此如果尚未加载,则跳过它).

if(tmpImg!=null && tmpImg.img.complete===true && tmpImg.img.src!=null){
    var tmpPos = i_getCoordsImage(tmpImg);
    var rect = getRectInCurrentView(tmpPos.x,tmpPos.y,tmpPos.w,tmpPos.h);
    console.log(tmpImg);
    console.log(rect);
    maindisplayContext.drawImage(tmpImg.img,rect.x,rect.y,rect.w,rect.h);
}

当tmpImg刚刚加载(至少根据Firebug的日志),然后消失时,该问题发生几次.
代码片段被连续调用多次,所以当抛出错误时,我看不到图像是否实际显示.
rect *中的值是浮点数,像{x:-1500,y:-2500,h:1000,w:1000}

你有什么想法这个错误的起源吗?

编辑1

代码产生错误(您需要在同一目录中有一个名为“test.png”的映像

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
    <Meta charset="UTF-8" />
</head>
<body id="body">
    <canvas id="canvas" width="600" height="600"></canvas>
    <script>
    //[CDATA[
        var img = new Image();
        var mdc = document.getElementById("canvas").getContext("2d");
        function displayCallback(){
            if(img.complete===true && img.src!=null){
                mdc.drawImage(img,600,600);
            }
            setTimeout(displayCallback,50);
        }
        setTimeout(function(){img.src = "test.png";},10000);
        setTimeout(displayCallback,1000);
    //]]
    </script>
</body>
</html>

这似乎与空图像具有“”的src合适性有关.它总是真的吗?

编辑2

事实上,对于错误报告,这个JavaScript就足够了(如果我明白的话):

document.getElementById("canvas").getContext("2d").drawImage(new Image(),0);

解决方法

当DOM API调用抛出未被捕获的JavaScript异常时,您会从Firefox获得这种无益的错误消息.执行drawImage – http://mxr.mozilla.org/mozilla-central/source/content/canvas/src/nsCanvasRenderingContext2D.cpp#3212代码似乎返回错误代码NS_ERROR_NOT_AVAILABLE(在C / JS边界时被转换为JS异常),由于某些原因,绘制图像所需的所有数据目前不在可用.似乎即使图像被认为是完全加载也可能发生这种情况;我对这部分代码不够熟悉,为什么会这样.

我认为,偶尔的Firefox内部黑客,您在浏览器中发现了一个错误specification for drawImage在任何情况下都不会使用此错误代码生成异常. (请注意行3243上的评论,似乎误解了规范说明.)请构建一个完整的,独立的测试用例来证明问题,然后我将很乐意提供一个错误报告.

原文地址:https://www.jb51.cc/js/151919.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐