Canvas 如何从firefox扩展在内容文档中创建画布?

Canvas 如何从firefox扩展在内容文档中创建画布?,canvas,firefox-addon,Canvas,Firefox Addon,我正在开发一个firefox扩展,这样我就可以从该扩展在内容文档(浏览器中加载的网页)中创建画布元素 我的职能如下: function createCanvas(el, e, count) { try{ alert("create canvas"); var x = getImgOffset(el).left; var y = getImgOffset(el).top; var body = window.content.document.getEleme

我正在开发一个firefox扩展,这样我就可以从该扩展在内容文档(浏览器中加载的网页)中创建画布元素

我的职能如下:

function createCanvas(el, e, count)
{
    try{
    alert("create canvas");
    var x = getImgOffset(el).left;
    var y = getImgOffset(el).top;
    var body = window.content.document.getElementsByTagName('body')[0];
    //removeSelection();
    var canvas = {};
    canvas.node = window.content.document.createElement('canvas');
    canvas.context = canvas.node.getContext('2d');
    canvas.node.setAttribute('id','canvas');
    canvas.node.setAttribute('height',el.offsetHeight+'px');
    canvas.node.setAttribute('width',el.offsetWidth+'px');
    canvas.node.setAttribute('style','left:'+x+';top:'+y+';border: 1px solid grey; position:absolute; z-index:2;');
    body.appendChild(canvas.node);
    alert("d");
    canvas.node.onmouseover = function(event){ 
        var t = (event && event.target) || (event && event.srcElement); 
        //alert("d : "+t.tagName);
        initCanvas(event);
    }
    initCanvas(e);
    }catch(er)
    {
        alert("crt canvas : "+er.name+"\n"+er.message);
    }
}
当我从网页内部调用函数时,此代码正在工作。但是,当我试图从工具栏调用此函数时,它抛出了一个异常

我在以下行中遇到错误:

canvas.node = window.content.document.createElement('canvas');
我也试过以下几行:

canvas.node = window.content.document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas');
&

但仍然得到相同的错误:

Error Name:  NS_ERROR_NOT_AVAILABLE
Error Message: Component is not available

请在这个问题上帮助我。

为什么不在覆盖中添加一个html:canvas元素呢。xul:

    <html:canvas id="my-canvas" style="display: none;" />

我已经知道了。

为什么不在overlay中添加一个html:canvas元素呢。xul:

    <html:canvas id="my-canvas" style="display: none;" />

我有。

通过示例学习通常是最容易的,使用画布的扩展的一个好例子是通过示例学习通常是最容易的,使用画布的扩展的一个好例子是我需要从工具栏在网页内创建
canvas
元素。我在那里遇到了错误。我不确定为什么从加载项代码将canvas元素添加到页面中会出现问题,但您可以尝试的一种方法是在创建和嵌入canvas元素的页面中嵌入。在Firefox4Web控制台上的测试表明,执行document.body.appendChild(document.createElement('canvas'))是非常好的;谢谢你@AmirNathoo。这对我有用。事实上,我没有找到逻辑。无论如何,谢谢。我需要从工具栏在网页内创建
canvas
元素。我在那里遇到了错误。我不确定为什么从加载项代码将canvas元素添加到页面中会出现问题,但您可以尝试的一种方法是在创建和嵌入canvas元素的页面中嵌入。在Firefox4Web控制台上的测试表明,执行document.body.appendChild(document.createElement('canvas'))是非常好的;谢谢你@AmirNathoo。这对我有用。事实上,我没有找到逻辑。无论如何谢谢你。
    var canvas = document.getElementById('my-canvas');