jQuery动态画布创建,$ctx.getContext不是函数

Posted

技术标签:

【中文标题】jQuery动态画布创建,$ctx.getContext不是函数【英文标题】:jQuery dynamic canvas creation, $ctx.getContext is not a function 【发布时间】: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')                                    

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

【问题讨论】:

【参考方案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 - 你可能想考虑接受这个答案(即使它已经两年了)

以上是关于jQuery动态画布创建,$ctx.getContext不是函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在动态创建的画布上使用 Paper.js?

使用 javascript/jquery 动态调整画布窗口的大小?

在“动态”画布上绘图

使用 JCrop 将图像裁剪到画布中

HTML5 动态创建画布

Javascript/jQuery:从画布中删除形状/路径