firefox svg.getElementById ('id') - PullRequest
       46

firefox svg.getElementById ('id')

2 голосов
/ 09 ноября 2011

Я экспериментирую с интерактивными изображениями.У меня есть ползунок jquery-ui, связанный с функцией, которая обновляет путь в документе SVG (встроен в веб-страницу).

Я пытаюсь получить путь с помощью:

document.getElementsByTagName('svg')[0].getElementById('me').setAttribute('d', "M 30 30 ...)

Это нормально работает в Chrome и Safari, но не в Firefox (где я должен использовать getElementsByClassName(..)[0]. Я что-то упускаю или id как атрибут, не разрешенный в документе SVG?

Кстати, я проверял последний выпуск Firefox 8.0

Только что увидел сообщение в консоли:

Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsIDOMSVGSVGElement.getElementById]

Было бы неплохо, если бы этобыло указано как обычная ошибка скрипта.

В соответствии с первым комментарием (я правильно использую id):

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="370"  width="400" baseProfile="full" viewbox="0 0 1000 1000">

  <g stroke="black" stroke-width="8" fill="black" transform="scale(4)">
  <path id="me" d="" class="classme"/>
  </g>
</svg>

Ответы [ 3 ]

5 голосов
/ 09 ноября 2011

Я только что реализовал svg.getElementById в Firefox.Он появится в Firefox 11.

3 голосов
/ 01 января 2012

Если вы не возражаете против использования jQuery, я только что протестировал с версией 1.7.1, и обход svg dom, кажется, работает просто отлично:

$("svg:first").find("#me").attr("d", "M 30 30 ...");
2 голосов
/ 09 ноября 2011

Узлы элемента не имеют метода getElementById. Это понятно, поскольку идентификатор должен быть уникальным для всего документа. Используйте document.getElementById('me').

Обратите внимание, что Firefox не поддерживает getElementById даже для элементов HTML (это означает, что не существует общего метода Element.prototype.getElementById; есть только HTMLDocument.prototype.getElementById).

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