2011-10-06 151 views
12

我们的系统负载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中的位置? (我们不能引入第三方库)。

+0

我有这个问题,答案是非常有用的给我。有关它为什么关闭的详细信息会很好。 –

+0

同样在这里...投票重新打开。 –

回答

35
  1. 转到http://phrogz.net/SVG/svg_in_xhtml5.xhtml
  2. 打开Web浏览器控制台
  3. 类型代码:

    var svg = document.querySelector('svg'); 
    var box = svg.getAttribute('viewBox'); 
    box.split(/\s+|,/); 
    
  4. 观察光荣响应:

    ["-350", "-250", "700", "500"] 
    
  5. 或者,键入代码:

    var box = svg.viewBox.baseVal; 
    [ box.x, box.y, box.width, box.height ] 
    
  6. 观察光荣响应:

    [ -350, -250, 700, 500 ] 
    

换句话说:是的,你可以视框从DOM,既作为standard DOM 2 attribute以及一个explicit ECMASCript binding

+1

这就是我最初尝试的。所以我只是试了一遍,但 var box = svg.getAttribute('viewBox');即使svg元素明显地是调试器中的正确节点,也会给我一个'未定义'。像'height'这样的其他属性可以通过这种方式获取,但不能'viewBox'。它只是很奇怪。 –

+0

另一种方法,svg.viewBox.baseVal,给我一个'0,0,0,0'框。我的问题可能涉及通过Ajax加载SVG –

+0

我有这个相同的问题,没有涉及Ajax。 –