我有内联 svg 并希望通过以下方式获取其中的一些元素:
svgdoc.getElementById( 'someid' );
适用于 Firefox、chrome,但不适用于 Opera。结果是null
。页面 (html5) 以xhtml
(content-type: application/xhtml+xml ) 形式提供,html 根元素包含所有出现在 inline-svg (svg, inkscape, ... ) 中的命名空间声明,这些声明是用 inkscape 和直接注入源。
所以,html元素看起来像这样:
<!DOCTYPE html>
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
并且包含的 svg 的头部如下所示:
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="581.75085"
height="382"
inkscape:version="0.48.3.1 r9886" >
<?xml ... ?>
声明在 html-source 中被删除。
编辑::
上面的解释有一点点错误... 将 SVG 注入到 ajax 响应的源中,然后通过 element.innerHTML 将其注入到 dom 中。请原谅这次失败!
顺便说一句:getElementsByTagName()
有效。
console.log( svgdoc.getElementByID ) --> function getElementById(){ [native code] }
这真的很奇怪,这可能是什么原因造成的?