第一步,我們加上對(duì)html5的支持。
<!--[if IE]> <script src="/public/html5.js" type="text/javascript"></script><![endif]-->
現(xiàn)在再看,會(huì)出現(xiàn)一個(gè)黑漆漆的框框,說(shuō)明IE8已經(jīng)認(rèn)識(shí)canvas標(biāo)簽了。但紅圈圈還是沒(méi)出來(lái),下面狀態(tài)欄仍然提示我們JS里壓根沒(méi)取到canvas。這說(shuō)明IE還只是認(rèn)識(shí)了canvas是個(gè)合法標(biāo)簽而已,至于怎么處理它,對(duì)不起,俺還不會(huì)。
第二步,加上對(duì)canvas的支持。
下載excanvas_r3.zip,解壓后,把excanvas.compiled.js拷貝到自己的目錄里,引用它?,F(xiàn)在看看,哈,一個(gè)紅色圈圈出現(xiàn)了!js works!
<!--[if IE]> <script type="text/javascript" src="/public/html5.js"></script> <script type="text/javascript" src="/public/excanvas.compiled.js"></script><![endif]-->
如果您足夠細(xì)心,您會(huì)發(fā)現(xiàn),樣式表中存在這么兩行:
border-radius: 20px; box-shadow: 0 0 40px #222;
這是CSS3的樣式哦!border-radius說(shuō)明我們要的黑框框四周應(yīng)該是圓角才對(duì),但現(xiàn)在卻四愣八插的;box-shadow那兒還有shadow呢。。。
下面是第三步,讓IE支持CSS3。在cv選擇器的最后,增加一句話(huà)
behavior: url(/public/ie-css3.htc);
#cv { width: 600px; height: 400px; background: #000; border-radius: 20px; padding: 20px; margin: 20px auto; box-shadow: 0 0 40px #222; behavior: url(/public/ie-css3.htc);}
其中,ie-css3.htc去 http://fetchak.com/ie-css3/ 下載,具體它能夠支持多少CSS3特性,網(wǎng)站說(shuō)的很清楚,我就不費(fèi)口舌了。
推薦的兼容方法無(wú)效?
在Bootcss.com網(wǎng)站中有一個(gè)基于HTML5的圖表繪制工具chart.js,比較簡(jiǎn)單實(shí)用,簡(jiǎn)略的看了下中文文檔,發(fā)現(xiàn)有對(duì)IE8及以下瀏覽器的支持,遂放入項(xiàng)目中開(kāi)始。當(dāng)功能做完,依照文檔中給出的方法對(duì)IE8進(jìn)行兼容,卻發(fā)現(xiàn)毫無(wú)效果,頓時(shí)傻眼。
搜尋問(wèn)題!
于是去網(wǎng)上搜了很多資料也無(wú)果,去查兼容方案excanvas.js為什么會(huì)有問(wèn)題,找出了一些蛛絲馬跡。excanvas雖然通過(guò)VML使IE8支持了Canvas,但是還是有一些問(wèn)題:動(dòng)態(tài)生成的Canvas不支持getContext(),DrawImage方法能用Canvas對(duì)象作為首參數(shù),不支持fillText等方法等等。
問(wèn)題出在fillText
于是我逐一對(duì)照檢查了這些問(wèn)題,果然,在chart.js中使用了fillText方法來(lái)繪制字符,從而導(dǎo)致無(wú)法繪制。知道了問(wèn)題所在了,離成功也就不遠(yuǎn)了。于是在網(wǎng)上查找了添加fillText的方法。添加后,還是不行,對(duì)照excanvas的例子,發(fā)現(xiàn)需要在onload中設(shè)置一個(gè)方法去執(zhí)行。果然成功了!
附上源代碼:替換掉標(biāo)準(zhǔn)的excanvas.js即可,其他文件僅作示例使用(chart.js在IE8下的動(dòng)畫(huà)效果會(huì)比較慢,建議在IE8下關(guān)閉動(dòng)畫(huà))
https://github.com/warmsheep/my-example/tree/master/OtherExample/chart
http://geek.warmsheep.com/post/2013-11-13/40060099890
聯(lián)系客服