我有一段代码,主要是用HTML5里面的canvas来进行一些绘图工作,这个页面包在一个iframe里面,设置:display:none。这段代码在IE9和chrome10里面工作的很正常,但是在firefox3.6或者4下面则报错:Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMCanvasRenderingContext2D.font]" nsresult: "0x80004005 (NS_ERROR_FAILURE)"根据调试发现不出什么问题,font的数据也正常,但就是不行,猜测可能是因为页面不可见的情况下才会出现这样的错误,于是将display设置为"",结果一切正常!请问该如何解决这个问题?

解决方案 »

  1.   

    http://hi.baidu.com/fish0715008/blog/item/a14bc7d33f8fc0d9a8ec9a59.html
      

  2.   

    那就是firefox的问题了! 对HTML5 的支持,各个浏览器还是有细微差别的
      

  3.   

    你这个问题估计是ff的bug。只能死马当活马医了。
    下面可能有用的解决方案你可以试试看。
    1.将canvas包在一个div里,设置div为display:none或者visibility:hidden试试看。
    2.将包在canvas外面的div设置成overflow:hidden;然后把height,width都设置成0px,一样可以达到不可见的效果
      

  4.   


    谢谢,但是这篇文章我已经看过了。
    “所以最后的总结就是,这个错误和你没有关系,错误的根源是 firefox ,所以你就不必头疼了,呵呵!”
    很遗憾,我仍然很头疼,因为当出现了这个错误的时候程序就不能继续向下了,这个错误会导致整个脚本不能正常工作……
    我现在有一个父/子页面,父通过iframe包住子页面,子页面一开始并不会显示出来,然后子页面里面有canvas进行一些绘图工作,完成以后才会显示出来。在子页面不可见的情况下绘制canvas貌似就有这样的错误。
      

  5.   

    另外不清楚为什么firefox的drawText通常绘制的位置Y要比设定的Y高那么1-2个像素左右?
    并且在我设置了阴影,然后使用渐变:
    gradient.addColorStop(0.1, "rgba(" + color + ",1)");
    gradient.addColorStop(0.2, "rgba(" + color + ",0)");
    这种情况下,绘制的文本从0到0.2都是正常的,0.2以后的都不可见(透明度为0),但是阴影却还有……
      

  6.   

    我现在改了一下,还是在可见状态下进行绘制好了……
    其他的问题如5L所述,能帮忙解决的在加100分!
    感觉firefox好头痛!