SMILを使用して、SVGに埋め込まれたフィールドへのテキストの入力をアニメーション化しようとしています。ChromeとSMIL対応のFirefoxの両方で毎晩次のコードを試しましたが、効果がありません。
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:html="http://www.w3.org/1999/xhtml">
<foreignObject>
<html:input type="text" value="">
<set attributeName="value" to="Hello World"
begin="0" dur="10s" fill="freeze" />
</html:input>
</foreignObject>
</svg>
テキストフィールドは表示されますが、空のままです。それで、beginEventに登録して、手動で置換を行うと思いました。イベントをテストするために、私は追加しました:
<rect id="rect" x="0" y="0" width="10" height="10">
<animate id="dx" attributeName="x" attributeType="XML"
onbegin="console.log('onbegin')"
begin="0s" dur="1s" fill="freeze" from="0" to="-10" />
</rect>
イベントモデルから意味のあるJavaScriptと同様に:
window.addEventListener( 'load', function() {
function listen( id ) {
var elem = document.getElementById( id )
elem.addEventListener( 'beginEvent', function() {
console.log( 'begin ' + id )
}, false )
elem.addEventListener( 'endEvent', function() {
console.log( 'end ' + id )
}, false )
}
listen( 'rect' )
listen( 'dx' )
})
ただし、どちらのブラウザでも、rect
またはで発生するイベントはありません。animate
次の論理的なステップは、アニメーション(ala。FakeSmile)をシミュレートすることのようですが、可能であれば、ブラウザーのアニメーションタイマーを使用したいと思います。