Получение оригинального SVG viewBox через javascript - PullRequest
17 голосов
/ 06 октября 2011

Наша система программно загружает файлы SVG в HTML через AJAX.Типичный файл SVG начинается с:

 <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, похоже, нет способа вернуть этот 'viewBox' из SVG DOM - ни в виде строки, ни в виде набора значений.Например, в Mozilla Firebug сообщает, что узел svg имеет 5 из 6 указанных нами атрибутов, а именно: xmlns, xml: space, height, width и xmlns: xlink.Но ViewBox явно отсутствует в этом списке.

Есть ли способ программно получить это значение?- где это в SVG DOM?(Мы не можем вводить сторонние библиотеки).

Ответы [ 4 ]

48 голосов
/ 07 октября 2011
  1. Перейдите на http://phrogz.net/SVG/svg_in_xhtml5.xhtml
  2. Откройте консоль веб-браузера
  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 ]
    

Другими словами: да, вы можете получить viewBox из DOM, как в виде стандартного атрибута DOM 2 , так и в качестве явной привязки ECMASCript .

5 голосов
/ 06 октября 2011

Вам захочется взглянуть на интерфейс SVGFitToViewBox, который задает свойство viewBox.Интерфейс для svg элементов, SVGSVGElement, расширяет этот интерфейс, так что это может быть свойство, которое вы ищете.

0 голосов
/ 04 июля 2019

Вышеупомянутые рецепты дали мне все нули для атрибутов viewBox x, y, width и height - если, по крайней мере, один из них не был изменен программно.

У меня наконец получилось

var width = document.getElementById("mysvg").getAttribute("width");
0 голосов
/ 24 апреля 2019

Еще проще, введите идентификатор в svg, затем:

document.getElementById ( "your_ID") GetAttribute ( "Viewbox");.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...