SVG в HTML с элементом скрипта - PullRequest
6 голосов
/ 01 января 2012

У меня есть встроенный SVG-код внутри HTML-страницы,

<body>
<div style="width:1000px;height:1000px">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" id="svgcanvas" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="viewport">
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red"/>
<script xlink:href="js/SVGPan.js" type="text/javascript"/>
</svg>

Сценарий корректно вызывается в Firefox 7.0, но не в Chrome 16.0.Почему это так?И какие изменения я должен внести в код, чтобы вызвать также JavaScript в Chrome?

Ответы [ 2 ]

9 голосов
/ 01 января 2012

Интересный вопрос.

Некоторые вещи, на которые следует обратить внимание.

Внутри обычного HTML <script ... /> не будет самозакрывающимся, и все, что последует, будет частью содержимого элемента script.

Внутри элемента <svg> <script ... /> является самозакрывающимся и образует целый элемент.

И Firefox, и Chrome понимают это правильно.

Однако спецификация HTML5говорит, что сценарий должен обрабатываться только когда синтаксический анализатор встречает конечный тег.Поскольку элемент не имеет конечного тега, сценарий не должен обрабатываться.Это то, что делает Chrome.

Спецификация SVG, однако, требует, чтобы скрипт запускался после того, как элемент был закрыт любым способом, а не только по конечному тегу.Это то, что делает Firefox.

ИМХО, спецификация HTML5 неверна и должна указывать поведение, соответствующее SVG.

ОБНОВЛЕНИЕ: 10 августа 2012 г.

Спецификация HTML5 (в настоящее время WHATWG версия только) была изменена для запуска скрипта SVG.См. https://www.w3.org/Bugs/Public/show_bug.cgi?id=17995

ОБНОВЛЕНИЕ: 16 сентября 2012 г.

Версия спецификации HTML5 для W3C теперь также исправлена.

5 голосов
/ 01 января 2012

Попробуйте <script></script> вместо <script/>, у меня были проблемы с этим раньше.

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