He creado un poco de la página tal como esta de aquí:función Llamar JavaScript dentro de SVG Rodeando HTML
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/javascript">
function test() {
executeAnimation();
}
</script>
</head>
<body>
<h1>Tester</h1>
<embed src="test.svg" type="image/svg+xml" />
<hr />
<input type='button' value='Test' onclick='test()' />
</body>
</html>
El test.svg
se parece a esto:
<?xml version="1.0" ?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg id="testSvgId" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="950" height="900">
<title>Title</title>
<desc>Desc</desc>
<defs>
<script type="text/javascript">
<![CDATA[
function executeAnimation() {
document.getElementById('anim').beginElement();
}
]]>
</script>
</defs>
<ellipse cx="500" cy="1090" rx="600" ry="0" fill="rgb(94,114,54)">
<animate id="anim" attributeType="XML" attributeName="ry" begin="indefinite" dur="2s" from="0" to="350" fill="freeze" />
</ellipse>
</svg>
Como se puede ver, desea llamar desde JavaScript en la página HTML la función executeAnimation()
que está definida en la imagen SVG. Esto en realidad no funciona.
También probé esto:
<svg onload='onloadFunction()'...>
...
function onloadFunction() {
alert('i am loading');
window.executeAnimation = executeAnimation();
}
Esto fue sugerido en otro foro, pero esto también no funcionaba (window.executeAnimation
no estaba definido desde el exterior).
¿Cuál sería la forma correcta de hacer esto?
Primer comentario después de cinco años, y acabo de notar que olvidé un espacio delante del código SVG, por lo tanto, solo se mostró "Título Desc". ¡NADIE LO HA NOTADO POR CINCO AÑOS! :-) El SVG funcionó unos días más tarde en 2012, así que supongo que esto se resuelve ahora: P –
¡Brillante! ¡Ni siquiera vi la fecha! Jaja. – dennispreston