2011-10-06 58 views
12

私たちのシステムは、SVGファイルをAJAX経由でHTMLにプログラムで読み込みます。典型的なSVGファイルはで始まる:オリジナルのSVG viewBoxを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ノードには、xmlns、xml:space、height、width、xmlns:xlinkの6つの属性のうちの5つがあります。しかしViewBoxはこのリストからはっきりと見当たりません。

この値をプログラムで取得する方法はありますか。 - SVG DOMのどこにありますか? (私たちはサードパーティライブラリを紹介することはできません)。

+0

私はこの質問をしており、答えは私にとって非常に有用でした。それがなぜ閉鎖されたのかについての詳細を知っておくとよいでしょう。 –

+0

ここに同じ...投票を再開する。 –

答えて

35
  1. ゴーオープンWebブラウザのコンソールコード
  2. タイプ:

    ["-350", "-250", "700", "500"] 
    
  3. また
  4. 、入力します。

    var svg = document.querySelector('svg'); 
    var box = svg.getAttribute('viewBox'); 
    box.split(/\s+|,/); 
    
  5. は栄光の反応を観察コード:

    var box = svg.viewBox.baseVal; 
    [ box.x, box.y, box.width, box.height ] 
    
  6. 栄光の応答守ってください。つまり

    [ -350, -250, 700, 500 ] 
    

:はい、あなたはstandard DOM 2 attributeとしてだけでなく、explicit ECMASCript binding両方、DOMからビューボックスを取得することができます。

+1

これは私が元来試みたものです。だから私はもう一度それを試みたが、 var box = svg.getAttribute( 'viewBox'); svg要素がデバッガの明白な正しいノードであっても、私には「未定義」が返されます。このように 'height'のような他の属性は取得できますが、 'viewBox'は取得できません。その奇妙な奇妙な。 –

+0

もう一つのアプローチ、svg.viewBox.baseValは私に '0,0,0,0'ボックスを与えます。私の問題は、Ajax経由でSVGを読み込むことに関連するかもしれません。 –

+0

私はこの同じ問題を抱えています.Ajaxは関係ありません。 –

関連する問題