我使用canvas元素在SharePoint的WebPart中绘制一些东西,因为IE不支持它,所以我将excanvas.js导入页面。但有时,WebPart什么都不显示。所以我创建了一个测试WebPart来查找原因。
一个简单的绘制矩形的js函数:
function drawRectangle(){
var canvas = document.getElementById("myCanvas");
var ctx = null;
if(canvas.getContext){
ctx = canvas.getContext("2d");
ctx.fillRect(30,30,100,100);
}else{
document.write("sorry.");
}
在c
# 文件中,我这样写:
protected override void RenderContents(HtmlTextWriter writer)
{
StringBuilder htmlBuilder = new StringBuilder();
htmlBuilder.Append("<canvas id='myCanvas' width='300' height='300'></canvas>");
htmlBuilder.Append("<script type='text/javascript'>");
htmlBuilder.Append("$(document).ready(function(){drawRectangle();})");
htmlBuilder.Append("</script>");
writer.Write(htmlBuilder.ToString());
}
问题又出现了,有时它显示“对不起”,而不是矩形,所以我可能猜想,当 drawRectangle() 函数开始工作时,excanvas.js 还没有准备好。是真的吗?或其他可能的原因导致这个问题?谢谢!
真实情况比这个简单的测试要复杂,这个问题也比较明显。