Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > SVG createElement


Автор: beaver 7.1.2017, 20:49
есть вот такой main.svg файл
Код
<svg    xmlns:svg="http://www.w3.org/2000/svg" 
        xmlns="http://www.w3.org/2000/svg" 
        xmlns:xlink="http://www.w3.org/1999/xlink" 
        onload="svgOnLoad();" 
        id="mySVG"
        version="1.1" width="420" height="295" viewBox="0 0 420 295">
<defs>
    <script type="application/ecmascript"><![CDATA[
        function svgOnLoad(){
        var container = document.getElementById('mySVG');
        var txt = document.createElementNS('http://www.w3.org/2000/svg', 'text');
        txt.setAttribute('x', '10');
        txt.setAttribute('y', '15');
        var t = document.createTextNode("This is text!");
        txt.appendChild(t);
        container.appendChild(txt);
        }
    ]]></script>
</defs>
<rect width="420" height="295" fill="#BBC42A" />
<text x="10" y="35">Text</text>
</svg>

рядом есть вот такой index.html
Код
<html>
<head>
</head>
<body>
<img src="main.svg" width="420" height="295" >
</body>
</html>

оба лежат на диске по пути C:/Test/. При открытии в браузере file:///C:/Test/main.svg все отображается, и текст, созданный через тэг text, и текст, созданный динамически. При открытии file:///C:/Test/index.html текст, который должен быть создан скриптом - не отображается. Подскажите, почему и как побороть?

Автор: beaver 8.1.2017, 13:19
нашел причину:
скрипт внутри svg игнорируется, если svg вставлен как img. Решение: использовать iframe или object

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)