В Google Chrome 24, если элемент, на который ссылается элемент <use>
, определяется позже в документе, он не отображается. Я не заметил ничего, связанного с порядком элементов в документации для элемента use
.
Является ли это поведение undefined и не следует ожидать, что он будет согласован между браузерами или просто ошибкой в Chrome?
Пример этого можно увидеть ниже (слегка измененный из этого вопроса). Синий круг выглядит так, как ожидалось, красный, не так много. Firefox 17 и IE 9 отображают оба круга, как я ожидал. Когда одно и то же содержимое ссылается на внешний <img />
, оба круга также отображаются.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Chrome use-tag bug?</title>
</head>
<body>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="200px" height="200px" viewBox="0 0 200 200">
<defs>
<g id="test2">
<circle cx="50" cy="50" r="25" fill="blue"/>
</g>
</defs>
<g>
<rect x="0.5" y="0.5" width="199" height="199" stroke="black" fill="none"/>
<use xlink:href="#test1" x="0" y="0"/>
<use xlink:href="#test2" x="0" y="0"/>
</g>
<defs>
<g id="test1">
<circle cx="100" cy="100" r="25" fill="red"/>
</g>
</defs>
</svg>
</body>
</html>
ОБНОВЛЕНИЕ. Кажется, он работает в Chrome 39.