5
A
回答
12
如果您已經創建了畫布 元素動態不會有 的getContext方法添加到 元素。爲了讓它工作,你需要 調用 G_vmlCanvasManager對象的initElement。
var el = document.createElement('canvas');
G_vmlCanvasManager.initElement(el);
var ctx = el.getContext('2d');
8
我把它添加到文檔中調用initElement前,它適用於IE8,Chrome和FF。花了我一段時間才弄明白。
var foo = document.getElementById("targetElementID");
var canvas = document.createElement('canvas');
canvas.setAttribute("width", 620);
canvas.setAttribute("height", 310);
canvas.setAttribute("class", "mapping");
foo.appendChild(canvas);
canvas = G_vmlCanvasManager.initElement(canvas);
4
我想我已經找到了這個訣竅。 IE不知道「畫布」是什麼,所以當你用JavaScript創建一個畫布元素時,它不起作用。
我見過其他例子這樣做是爲了創造自己的畫布:
var el = document.createElement('canvas');//this doesn't work in IE
因此,關鍵是創造一些法律和調用畫布上初始化它,而不是隻是糊弄IE。
我用jQuery來對HTML的該塊,然後我插入DOM做一個AJAX GET:
<div id="canvasholder">
<canvas id="mycanvas" width="1024" height="768" style="width:1024px;height:768px"></canvas>
</div>
在JavaScript中的Ajax調用已經完成,HTML插入後,我做我的畫布初始化。這只是我的init函數中有趣的片段。
...
canvas = $('#mycanvas').get(0);//get dom element from jquery
if(!canvas.getContext)//function doesn't exist yet
{
//we're in IE if we reach this block
//otherwise getContext already exists
$('#canvasholder').empty();
//add #mycanvas as a div instead of a canvas
//you could use document.createElement('div') instead of jquery
$('#canvasholder').append(
'<div id="mycanvas" width="1024" height="768"></div>');
canvas = $('#mycanvas').get(0);
if(typeof G_vmlCanvasManager != 'undefined')
{
canvas = G_vmlCanvasManager.initElement(canvas);
}
}
//now you're set up to draw!
context = canvas.getContext("2d");
...
這現在在Firefox和IE7中都適用於我。
相關問題
- 1. 動態創建畫布元素
- 2. 動態創建動畫元素
- 3. 動態創建動畫元素?
- 4. getElementByClassName用於動態創建的元素
- 5. AngularJS發佈動態創建的元素
- 6. 動態創建畫布中的img元素
- 7. 動態創建的元素用於拉斐爾帆布
- 8. 有沒有辦法在使用excanvas時克隆畫布元素?
- 9. 動態創建畫布
- 10. HTML5動態創建畫布
- 11. 添加畫布和圖像來動態創建li元素
- 12. 使用AngularJS創建HTML畫布元素
- 13. 動畫HTML畫布元素
- 14. 在JavaScript中動態創建元素使用EventListener創建元素
- 15. 的DrawImage動態創建的畫布上
- 16. 動態繪製一個畫布元素
- 17. 動態DOM元素創建
- 18. 動態創建Span元素
- 19. 創建元素動態
- 20. 動態創建jquery元素
- 21. 動態創建React元素
- 22. 動態創建元素
- 23. jQuery的:調用函數用於動態創建的元素
- 24. 無法發佈使用javascript創建的動態表單元素
- 25. 動態創建畫布背景
- 26. 將插件的方法應用於動態創建的元素?
- 27. jQuery的CSS()用於動態創建的元素
- 28. 動畫的畫布元素的尺寸
- 29. 使用jQuery動態創建元素
- 30. 用php動態創建表單元素
我已經試過這個解決方案,但它沒有與IE8的工作...! – user192318
您使用的是什麼版本的excanvas?顯然VML在IE8中改變了,所以你至少需要rev。 43來支持它。您也可以嘗試使用X-UA兼容標頭/元標記打開IE7兼容模式。 –