通过AJAX通过javascript
我们的系统负载SVG文件获取原始SVG视框编程到HTML中。一个典型的SVG文件开头:通过AJAX通过javascript
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0,0 65415,41616' xml:space='preserve' height='50.000cm' width='50.000cm' xmlns:xlink='http://www.w3.org/1999/xlink
但奇怪的是在JavaScript中似乎没有得到这个“视框”从SVG DOM回的方式 - 无论是作为一个字符串,或作为一组值。在Mozilla,例如,萤火虫报告该SVG节点具有我们specifiy 6个属性5 - 即:XMLNS,XML:空间,高度,宽度和xmlns:的xlink。但是ViewBox显然从此列表中缺失。
反正是有以编程方式检索此值? - 它在SVG DOM中的位置? (我们不能引入第三方库)。
你会想看看的SVGFitToViewBox
接口,用于指定viewBox
财产。 svg
元素的接口SVGSVGElement
扩展了该接口,因此可能是您正在查找的属性。
没有解决方案?只是链接? – earl3s
- 转到http://phrogz.net/SVG/svg_in_xhtml5.xhtml
- 打开Web浏览器控制台
-
类型代码:
var svg = document.querySelector('svg'); var box = svg.getAttribute('viewBox'); box.split(/\s+|,/);
-
观察光荣响应:
["-350", "-250", "700", "500"]
-
或者,键入代码:
var box = svg.viewBox.baseVal; [ box.x, box.y, box.width, box.height ]
-
观察光荣响应:
[ -350, -250, 700, 500 ]
换句话说:是的,你可以视框从DOM,既作为standard DOM 2 attribute以及一个explicit ECMASCript binding。
这就是我最初尝试的。所以我只是试了一遍,但 var box = svg.getAttribute('viewBox');即使svg元素明显地是调试器中的正确节点,也会给我一个'未定义'。像'height'这样的其他属性可以通过这种方式获取,但不能'viewBox'。它只是很奇怪。 –
另一种方法,svg.viewBox.baseVal,给我一个'0,0,0,0'框。我的问题可能涉及通过Ajax加载SVG –
我有这个相同的问题,没有涉及Ajax。 –
我有这个问题,答案是非常有用的给我。有关它为什么关闭的详细信息会很好。 –
同样在这里...投票重新打开。 –