我使用了一个canvas元素来显示一个贴图,这些贴片根据从MySQL查询获得的值着色并写入javascript数组。它可以在我的两台计算机上运行,包括Firefox 4,IE 9和Safari。但是当我在学校做一个演示时,IE 8(可能会有问题)和Firefox 3.6(应该可以工作),画布不可见。我看不出它甚至可以被禁用!学校的IT人员做了什么,我该如何测试它并绘制一个常规的图像映射呢?
答案 0 :(得分:1)
IE8不支持画布。您可以使用excanvas来模拟它。
其次,IIRC,浏览器没有义务将画布宽度和高度设置为任何值。您可以尝试设置width
和height
属性。
UPD:如果您提供页面的片段,那就太好了。在你这样做之前,有一些关于如何缩小问题的想法。
确保您的网页文档类型设置为<!doctype html>
。
确保不显示任何关于canvas
不受支持的消息(即<canvas>
和</canvas>
之间的文字)(Firefox 3.6不应该发生,但不过)。
为canvas元素设置style='border:solid;'
。检查边框是否在预期位置绘制。
将canvas
包含在div
元素中并确保它显示在预期位置(例如,同时为其设置style='border:solid;'
)。
如果显示画布和/或包装元素的边框但没有绘图,则绘图代码会出现一些错误。如果不是那么元素定位存在问题(例如CSS疯狂)或加载文档本身。
UPD:我在启用了Firebug的情况下运行了网站,并在drawImage
调用时显示异常。
img.src = 'images/snap9.jpg';
ctx.drawImage(img,0,0); // HERE!
但仅适用于浏览器会话中第一次加载页面。
原因是(我猜)当你将src
设置为图像地址时,它不会立即加载,并且在此之前无法绘制它。因此抛出了exeption,并且没有执行其余的编码。
您应该为图像设置onload
处理程序(请参阅here)并在此处理程序中完成剩余的绘图操作。
如果有帮助,请告诉我。