动态生成的svg适用于IE9

时间:2012-04-19 18:32:00

标签: asp.net svg internet-explorer-9 ashx

我们的网页使用来自ashx页面的动态生成的svg。这适用于IE8及更早版本的Adobe SVG插件。它在IE9中不起作用(包括兼容模式)。我们正在使用< object>标签。我正在尝试修改页面以使用IE9。

我能够使用我在网上找到的一个简单的测试svg来渲染SVG:

<embed src="http://oursite.com/circle1.svg" type="image/svg+xml"
    height="200" width="550"/>

但是,如果我将其更改为:

<embed src="http://oursite.com/ourhandler.ashx?t=Circle&v=1&ext=.svg"
    type="image/svg+xml" height="200" width="550"/>

我得到一个带有禁用垂直滚动条的空白框。

"ourhandler.ashx?t=Circle&v=1&ext=.svg"的输出与“circle1.svg”的内容相同,浏览到http://oursite.com/Ourhandler.ashx?t=Circle&v=1&ext=.svg可直接在IE9中正确呈现。

在IE9中使动态生成的svg工作需要做些什么?我没有附加到<embed>标记,但是对于其他方法(例如<object>标记)没有任何运气。

3 个答案:

答案 0 :(得分:1)

检查您是否允许处理程序的HEAD请求。 IE曾经有两个GET请求:一个用于内容类型,另一个用于对象。现在第一个请求是HEAD,因此如果不允许动词,则第二个请求将不起作用。

答案 1 :(得分:0)

适用于所有浏览器:

http://jsfiddle.net/mihaifm/n8DWe/3/

也许这是关于如何封装嵌入的问题。

答案 2 :(得分:0)

我也有同样的问题。

我使用Fiddler来跟踪问题,然后我发现该元素没有向“scr”属性指定的URL发布请求。但是当“src”的ext开头时它会请求“.SVG”。

最后我找到了解决方案。

第1步

我将src更改为(使用“.svgx”ext)

<embed src="http://oursite.com/ourhandler.svgx?t=Circle&v=1"
type="image/svg+xml" height="200" width="550"/>

第2步

将HttpModule写入Rewrite您真实网址的网址。

在您的情况下,真实网址为http://oursite.com/ourhandler.ashx?t=Circle&v=1&Ext=.svg