我正在我的 ASP.NET Web 应用程序中绘制形状。在 IE9 和其他浏览器中,我使用 SVG 来实现,效果很好。在 IE8 及以下版本中,我使用 VML。我发现 IE8 在 IE8 标准模式(不使用兼容性视图)下根本不显示 VML。
我的文档类型设置为<!DOCTYPE html>
。如果我完全去掉文档类型,IE8 会进入怪异模式并且工作正常,但 IE9 然后会进入其怪异模式(而不是 IE9 标准)并且不显示 SVG。
这是在测试页面上发生的,因此除了包含 div 的表单(包含<svg>
元素及其子元素或 VML 元素。
这里发生了什么?看来我不必为不同的浏览器更改文档类型,并且 Stack Exchange 用户页面上的信誉图似乎以相同的方式工作(IE8 及以下版本为 VML,其他所有人为 SVG,HTML5 文档类型)...
您还需要检查以下几件事:
行为规则的选择器需要修改。
- 设置元素的尺寸或位置时,单位不默认为 px。必须明确指定它才能工作。
- 您无法在 DOM 之外创建 VML 元素:
.
var vmlFrag = document.createDocumentFragment();
vmlFrag.insertAdjacentHTML('beforeEnd',
'<v:rect id="aRect" fillcolor="red"
style="top:15px;left:20px;width:50px;height:30px;position:absolute;"></v:rect>'
);
document.body.appendChild(vmlFrag);
- 矩形元素不会显示!你也不能修改它的 CSS,因为你可能会让浏览器崩溃。不过,有一个解决办法。将元素的outerHTML 复制到其自身中:
.
var aRect = document.getElementById('aRect');
aRect.outerHTML = aRect.outerHTML;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)