[翻译]IE8下VML的变化

新的excanvans继续得到IE8的支持。尽管自VML于1998年发布以来,从没有经历过任何变更和改进。微软
开发团队倾向于对他们的标准做些变动。
1、命名空间的声明函数增加了第三个参数。
原来的方式:
document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', "#default#VML");
取而代之的最新的方式:
document.namespaces.add('v', 'urn:schemas-microsoft-com:vml');
2、行为规则选择器做了细微的变动。
3、出于朝标准靠拢,当设置元素的维度或位置的时候,应该明确的指定计量单位,默认的单位不在是px。
4、在DOM元素外部创建VML元素将是无效的。
var myFragment = document.createDocumentFragment();
myFragment.insertAdjacentHTML('beforeEnd',
'<v:rect id="myRect" fillcolor="blue" style="top:10px;left:15px;width:50px;height:30px;position:absolute;"></biv:rect>'
);
document.body.appendChild(myFragment);
上面的代码我们发现rect元素没有显示。我们尝试着修改它的css属性,甚至会以为tab标签选项卡或整个浏览器出了问题。其实不然,我们
有好的办法来修复这个bug:拷贝元素的outHTML给它本身。
var myRect = document.getElementById('myRect');
myRect.outerHTML = myRect.outerHTML;
5、使用%单位无用了。向量图形的优点是按比例调整大小不会有质量丢失。当所有部件的维度和位置使用pixels来设置
时,我们应该如何来测量图形呢?你不得不借助onpropertychange事件来重新计算一次你打算重新定制大小的图形的尺寸。
很多实例中我们不能简单的修复这个bug。比如:在div中放置个正方形:这个div的内容没有维度和比例,你希望正方形的高度随div的显示比例
变化而变化。你可以通过设置正方形的高度为100%即可(前提是div的位置是相对的)。

原文地址:http://ajaxian.com/archives/the-vml-changes-in-ie-8

posted @ 2009-10-18 22:42 风影极光 阅读(...) 评论(...) 编辑 收藏