Обнаружение поддержки beginElement ()

Я использую beginElement() для запуска SVG-анимации в своем веб-приложении:

document.getElementById("item").beginElement();

Но это вызывает следующую ошибку в IE9 и выше (которая не поддерживает):

Object doesn't support property or method 'beginElement'

Я не против, чтобы анимация не работала в IE9, но мне нужно предотвратить появление ошибки. Как настроить проверку, чтобы beginElement() вызывалась только в том случае, если браузер ее поддерживает? Например.:

if (hasSupport) {
    document.getElementById("item").beginElement();
}

Я пробовал метод обнаружения вроде этого:

return !!document.getElementById("item").beginElement();

Но это всегда возвращает false, даже в браузерах, которые, как я знаю, поддерживают его (например, Firefox).

Я также смотрел на использование Modernizr, но у него нет теста на beginElement().


person daGUY    schedule 13.10.2014    source источник
comment
В Modernizr есть тест для SMIL, который вы могли бы использовать, хотя он немного более общий. Но нет никакого смысла проверять beginElement, если SMIL тоже не поддерживается.   -  person Erik Dahlström    schedule 15.10.2014


Ответы (1)


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

var item = document.getElementById("item");

if ('beginElement' in item) {
    item.beginElement();
}

Modernizr использует in форму, однако if (item.beginElement) будет работать точно так же.

person Patrick    schedule 13.10.2014