Прототип увеличивает элементы с помощью метода Element.addMethods
. Если вы посмотрите на исходный код , вы увидите следующую часть:
var elementPrototype = window.HTMLElement ? HTMLElement.prototype :
Element.prototype;
if (F.ElementExtensions) {
copy(Element.Methods, elementPrototype);
copy(Element.Methods.Simulated, elementPrototype, true);
}
Здесь предпочтение отдается HTMLElement.prototype
, которые SVG-элементы не наследуют. Он возвращается к Element.prototype
в тех браузерах ( кашель IE кашель ), которые также не поддерживают SVG. Вы можете редактировать исходный код напрямую и копировать все действия копирования на SVGElement
.
Это звучит как большая работа, когда вы понимаете, что можно использовать более простой взлом. Статические методы Element.*
по-прежнему работают при непосредственном использовании. Вместо $('counties').identify()
используйте Element.identify('counties')
. Где вы можете сделать что-то вроде этого:
$$('.classname').invoke('hide');
Вы можете принять хороший функциональный эквивалент:
$$('.classname').each(Element.hide);
// or replace Element.hide with Effect.fade or any other effect
Недостатком является то, что вы теряете способность использовать метод цепочки.