【问题标题】:jQuery dynamic canvas creation, $ctx.getContext is not a functionjQuery动态画布创建,$ctx.getContext不是函数
【发布时间】:2011-03-15 10:59:36
【问题描述】:

当我尝试在 jQuery 中执行此操作时,我在 firebug 中得到 $ctx.getContext is not a function

var $ctx = $( '<canvas />', {width:'100', height:'100'} )
$widget.append($ctx)                                     
$ctx.getContext('2d')                                    

知道为什么会出现此错误吗?如何动态创建和初始化画布元素?

【问题讨论】:

    标签: jquery html canvas


    【解决方案1】:

    首先,您需要检查以下行是否存在以及HTML文档的顶部。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML Strict//EN">
    

    此行作为浏览器渲染策略的执行条件。

    【讨论】:

    • 这与问题有什么关系?
    【解决方案2】:

    如果使用 excanvas,您需要使用以下内容才能在 IE 中运行。

    var canvas = $ctx[0];
    
    if (canvas.getContext == undefined) {
        return G_vmlCanvasManager.initElement(canvas).getContext("2d"); 
    }
    
    return canvas.getContext('2d')
    

    【讨论】:

      【解决方案3】:

      $ctx 是一个 jQuery 对象。使用$ctx[0].getContext('2d') 获取上下文

      【讨论】:

      • var $ctx = $( '&lt;canvas /&gt;', {width:'100', height:'100'} )[0].getContext('2d')
      • 这将分配 $ctx 画布上下文,这既令人困惑又不是,​​我相信埃文的目的......他确实需要收集 getContext() 调用的结果 - 所以你是对的......
      • @Evan,您现在跳过了附加步骤.. 对于单个班轮,请尝试 $( '&lt;canvas /&gt;', {width:'100', height:'100'} ).appendTo($widget)[0].getContext('2d') 但现在您没有引用您的 jquery 对象的变量..
      • @scott,是 Evan 发表了评论 ;)
      • @EvanCarroll - 你可能想考虑接受这个答案(即使它已经两年了)
      猜你喜欢
      • 2013-04-04
      • 2012-05-26
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-13
      相关资源
      最近更新 更多