Вопрос по svg, internet-explorer-9, smil, fakesmile – FakeSmile с IE9

3

Я пытаюсь подделать поддержку SMIL в IE9Фальшивая улыбка

Я динамически создаю элемент SVG, добавляю прямоугольный элемент с элементом animate и вызываю beginElement (). IE9 выдает мне ошибку: Объект не поддерживает свойство или метод "beginElement"

Статические SVG работает: http://jsfiddle.net/FG3PG/1/

Как я могу использовать FakeSmile, чтобы это исправить? Ниже показано, что я пытаюсь сделать: http://jsfiddle.net/DgMDV/13/

И вот тот же код:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <script type="text/javascript" src="http://bazaar.launchpad.net/~smilteam/smil/MAIN/download/head:/smil.user.js-20080305202719-59ane0zgfr5f3vz8-1/smil.user.js"></script>
</head>
<body>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" height="200">
   <rect class="drag resize" x="10" y="10" width="100" height="50" fill="#c66" />
</svg>
<script type="text/javascript">
    var svg   = document.getElementsByTagName('svg')[0];
    var svgNS = svg.getAttribute('xmlns');
    var rect = document.getElementsByTagName('rect')[0];

    var animation = document.createElementNS(
        "http://www.w3.org/2000/svg", "animate");
    animation.setAttributeNS(null, 'attributeName', 'x');
    animation.setAttributeNS(null, 'dur', 0.5);
    animation.setAttributeNS(null, 'begin', 'indefinite');
    animation.setAttributeNS(null, 'fill', 'freeze');
    animation.setAttributeNS(null, 'to', 100);
    rect.appendChild(animation);
    animation.beginElement();
</script>
</body>
</html>
что с<script type="text/javascript" src="vb.js"></script>? он выбрасывает 404 на консоль JS @ jsFiddle. Eliran Malka
Я протестировал динамическую демонстрацию на FF и Chrome, и она отлично работает. pablo
Вы должны изменить свой вопрос, так как ваша динамическая демонстрация не завершена и не работает в других браузерах, кроме IE. Eliran Malka
Я добавил пример статического SVG, который работает. При динамическом создании элемента анимации происходит сбой. pablo

Ваш Ответ

2   ответа
0

animation.setAttributeNS(null, 'begin', 'indefinite');

Измените имя свойства, чтобы оно соответствовало значению:

animation.setAttributeNS(null, 'repeatCount', 'indefinite');
Я следовал учебному пособию по Opera, в котором говорится, что начало неопределенное означает, что анимация должна начаться сейчас.dev.opera.com/articles/view/advanced-svg-animation-techniques Когда я комментирую строку, которая устанавливает атрибут begin, я получаю анимацию, работающую на IE9, но beginElement все равно выдает мне ту же ошибкуjsfiddle.net/DgMDV/14 pablo
1

что fakesmil не поддерживает динамические анимации и что это может быть добавлено с помощью следующей функции: https://answers.launchpad.net/smil/+question/203333

function registerAnimation(anim) {
    var targets = getTargets(anim);
    var elAnimators = new Array();
    for(var i=0; i<targets.length ;i++) {
      var target = targets[i];
      var animator = new Animator(anim, target, i);
      animators.push(animator);
      elAnimators[i] = animator;
    }
    anim.animators = elAnimators;
    var id = anim.getAttribute("id");
    if (id)
      id2anim[id] = anim;
    for(var i=0; i<elAnimators.length ;i++)
      elAnimators[i].register();
}
Хорошо, это работает в IE ..jsfiddle.net/whyoz/c3wb5sbr

Похожие вопросы