我有一个测试页面:http ://benfrain.com/playground/svg-test/
在其上,我以多种方式插入了相同的 SVG(img、object、inline 和 background 图像)
我还实现了use
在 SVG 中重用 defs 的方法(仅适用于object
插入方法和“内联”插入方法)。
在控制台中,您将看到我还尝试从每个插入方法访问 SVG 内容(我知道 img 和背景图像不应通过脚本访问 - 我只是证明这一点)。
但是,在任何版本的 Internet Explorer (IE9+) 上,object
插入方法无法加载外部 CSS(如评论中所述,IE 需要替代链接机制)从内部引用(通过 xlink,如果它正在工作,您会看到 6px 宽的笔划)并且它是无法通过 JavaScript 访问(适用于所有其他常青浏览器)(我的错)。
谁能澄清为什么?我已经浏览了规范:http ://www.w3.org/TR/html5/embedded-content-0.html#the-object-element但我必须承认一些技术细节超出了我的理解范围。
更新: 继罗伯特在下面的评论之后,我对上面的测试页面进行了一些调整。
首先,该对象可以通过脚本访问(菜鸟错误)。然而,怪事仍然比比皆是:
如果 SVG 具有这种格式的链接:<?xml-stylesheet href="styles.css" type="text/css"?>
则 IE11 将该样式表中的样式应用到 SVG,无论它是通过 img、background-image、inline 还是对象插入到页面中(Safari/Firefox/Chrome 仅应用样式,如果SVG 是内联或通过object
) 插入的。