我们的网页使用从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