现在要实现不通过浏览器的画图功能,在IE下当然是用vml,其他浏览器暂不讨论:(以下代码是请用IE运行,版本5.5+)这是一个标准的xhtml+vml线段的页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD>
<META content="text/html; charset=UTF-8" http-equiv=Content-Type>
</HEAD>
 <BODY>
  <v:line style="POSITION: absolute; BEHAVIOR: #default#VML" from = "0,0" to = "75pt,75pt">
  </v:line>
 </BODY>
</HTML> 当然,这样写是出不来的以下代码可以正常运行:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml" xmlns:v = "urn:schemas-microsoft-com:vml"><HEAD>
<META content="text/html; charset=UTF-8" http-equiv=Content-Type>
<?import namespace = "v" implementation = "#default#VML" />
</HEAD>
 <BODY>
  <v:line style="POSITION: absolute; BEHAVIOR: #default#VML" from = "0,0" to = "75pt,75pt">
  </v:line>
 </BODY>
</HTML> 
代码2中增加了xmlns:v = "urn:schemas-microsoft-com:vml"和<?import namespace = "v" implementation = "#default#VML" />我现在需要用javascript操作dom从代码1,变成代码而,也就是说增加xmlns:v = "urn:schemas-microsoft-com:vml"和<?import namespace = "v" implementation = "#default#VML" />这两个地方,前面用document.namespaces可以做到后面就不知道怎么做了,但是没有后面这句,就不能正常绘制。后面这个应该是属于processing instruction,但是没有找到对应的dom方法请问:1.在xhtml中,动态增加processing instruction的方法是什么?2.如果没有的话,有没有其他方法,能绘制出图形的?(不能在页面中写死代码,必须要能够从干净的xhtml动态绘制图形,写死代码不能兼容其他浏览器,这是不合要求的)有没有类似的经验分享一下啊,先谢谢了。  

解决方案 »

  1.   

    import换成style也行 <style>v\:*{Behavior:url(#default#VML);}</style>参考
    VML绘图
      

  2.   

    "import换成style也行"貌似在IE8,xhtml下,不支持v\:*
    这也是郁闷的地方啊...
    IE7+xhtml都可以的不过肯定是要兼容IE8的额,悲剧了。
      

  3.   

    还有1种方法
    添加一种图形的时候引入inline style
    比如矩形:
    style="v\:rect {Behavior:url(#default#VML);display:inline-block}"
    这样也能做到动态
    我没去试,觉得不怎么好,最好能直接动态添加processing instruction
      

  4.   


    可以吧。。我在IE8下运行是可以的IE9就不知道了。。xp系统,安装不了IE9