动态生成的 svg,适用于 IE9



我们的网页使用从ashx页面动态生成的svg。 这适用于使用 Adobe SVG 插件的 IE8 及更早版本。 它在IE9(包括兼容模式)中不起作用。 我们正在使用 <对象> 标签。 我正在尝试修改页面以使用 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中正确呈现。

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

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

在所有

浏览器中都对我有用:

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

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

我也有同样的问题。

我使用 Fiddler 来跟踪问题,然后我发现该元素没有向"scr"属性指定的 URL 发布请求。但是当"src"的分机以".svg"开头时,它确实会请求。

最后我找到了解决方案。

步骤 1

我将 src 更改为类似的东西(使用".svgx"分机)

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

步骤 2

编写一个 HttpModule 以将 URL 重写为真实 URL。

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

最新更新