我做了以下观察:
如果我创建一个引用外部光栅图像的 svg 图像xlink:href
并尝试在浏览器中加载 svg,则外部图像仅在我使用<object>
标签时显示,但在使用<img>
标签时不显示。
使用标签进行渲染<object>
非常慢,而且不像使用 img 标签来处理图像那样干净,所以我想知道是否有办法让它通过<img>
标签工作。
起初我认为它不起作用,因为同源策略,但即使引用的图像在同一个目录中并且我只通过它的名称引用它,它也不会加载。
有任何想法吗?
我做了以下观察:
如果我创建一个引用外部光栅图像的 svg 图像xlink:href
并尝试在浏览器中加载 svg,则外部图像仅在我使用<object>
标签时显示,但在使用<img>
标签时不显示。
使用标签进行渲染<object>
非常慢,而且不像使用 img 标签来处理图像那样干净,所以我想知道是否有办法让它通过<img>
标签工作。
起初我认为它不起作用,因为同源策略,但即使引用的图像在同一个目录中并且我只通过它的名称引用它,它也不会加载。
有任何想法吗?
你用的是IE吗?无论如何,IE 都不识别 SVG。微软总是落后十年,但出于某种原因,它们更受欢迎且成本更高。名牌宣传?
SVG 在 Firefox 中加载。作为直接在 URL 中引用的 XML 文档,如果您将其嵌入到具有适当命名空间的 XHTML(完全符合 XML)文档中,则 SVG 应该正确呈现。这个选项的好处是 DHTML 可以操纵您的 SVG。如果您好奇的话,我在本段中所说的一切也适用于 MathML。
除此之外,SVG 不会从图像标签加载。不过,我确实相信 Firefox 正在努力进行此升级。我不完全确定。
我想使用 object 或 embed 标签是合理的......但我早期的修复之一是使用 iframe。在引用完整 SVG 文件的 html 中嵌入 iframe。使用 CSS,您可以使 iframe 看起来与文档的其余部分齐平,看起来像图像一样。包含在 div 或 span 标签中,您可以拥有 onhover 和 onclick 事件处理程序。
使用图像标签,您的 src 可以是服务器端的 PHP 文件。如果编码正确并使用适当的 cgi 应用程序,您可以在服务器端光栅化您的 SVG,并通过 PHP src 将 PNG 数据发送回您的图像。
我认为您至少落后了 10 个月...IE9 支持 SVG,并且预发布版本(包括测试版)已经发布了很长一段时间。查看 www.ietestdrive.com 以获取平台预览 - 这非常好。在我看来,他们对 SVG 的部分支持目前比 Firefox 好得多(但他们还不支持 SMIL)。
除了可能的交互方面(img 是静态的,而 object 是完全交互的文档)之外,没有什么特别的原因<object>
应该比加载更慢。<img>
svg 中的图像应该在两种情况下都加载,所以这听起来像是浏览器中的错误。
你能发布一个链接到你的例子吗?