2011-10-06 146 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。 –