我有一个网站取决于vector绘图,因特网资源pipe理器我使用VML和其他浏览器我使用SVG。 但是,IE8不支持既不回退到具有VML的IE7模式。 因此,我包括<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 。 这个问题(其实是一件好事)是,IE9现在支持SVG,所以我不希望它回落到性能和兼容性差得多的IE7模式。 我怎么只告诉IE8回落到IE7模式,但让IE9留在IE9模式。 现在我正在做一个服务器端检查代理是否在头部包含EmulateIE7string,但我想尽可能避免这种情况。
我正在写一点JavaScript,需要在SVG或VML(或者两者兼有,或其他的东西,这是一个奇怪的世界)之间进行select。 虽然我知道,现在只有IE浏览器支持VML,我宁愿检测function比平台。 SVG似乎有几个属性,你可以去:window.SVGAngle例如。 这是检查SVG支持的最佳方法吗? VML有没有等价物? 不幸的是 – 在Firefox中,我可以非常高兴地在VML中完成所有的渲染,没有任何错误 – 屏幕上什么都没有发生。 从脚本中检测这种情况是相当困难的。
下面的SVGpath可以画出99.99%的圆:(在http://jsfiddle.net/DFhUF/46/上试一下,看看你是否看到4个弧或者只有2个,但是请注意,如果它是IE,就会呈现在VML中,不是SVG,但有类似的问题) M 100 100 a 50 50 0 1 0 0.00001 0 但是当它是99.99999999%的一个圆时,什么都不会显示出来? M 100 800 a 50 50 0 1 0 0.00000001 0 这与100%的圆相同(它仍然是一个圆弧,是不是,只是一个非常完整的圆弧) M 100 800 a 50 50 0 1 0 0 0 这怎么解决? 原因是我用一个函数来绘制一个弧的百分比,如果我需要用“特殊情况”一个99.9999%或100%的弧来使用这个圆的函数,那就太傻了。 同样,使用RaphaelJS的jsfiddle的testing用例在http://jsfiddle.net/DFhUF/46/ (如果是IE 8上的VML,即使是第二个圆也不会显示…您必须将其更改为0.01) 更新: 这是因为我在我们的系统中渲染了一个分数的弧,所以3.3分得到1/3的一个圆。 0.5圈半圈,9.9圈圈达到99%。 但是如果我们的系统中有9.99的分数呢? 我是否要检查它是否接近圆的99.999%,并相应地使用arc函数或circle函数? 那么9.9987的分数呢? 哪一个使用? 想要知道什么样的分数会映射到一个“太圆的圆圈”并切换到一个圆圈函数,当它是一个圆的“99.9%”或9.9987的分数时,那么使用弧函数是荒谬的。