2012-12-27 13 views
10

W przeglądarce Google Chrome 24, jeśli element, do którego odnosi się element <use> jest zdefiniowany w dalszej części dokumentu, nie jest renderowany. Nie zauważyłem niczego związanego z porządkiem elementów w dokumentacji elementu use.Czy kolejność elementów ma znaczenie dla wbudowanej SVG?

Czy to zachowanie jest niezdefiniowane i nie należy oczekiwać, że będzie ono spójne w różnych przeglądarkach lub po prostu błąd w przeglądarce Chrome?

Przykład tego można zobaczyć poniżej (nieznacznie zmodyfikowane z pytania this). Niebieskie koło renderuje się zgodnie z oczekiwaniami, czerwone, nie tak bardzo. Firefox 17 i IE 9 renderują oba kręgi, jak się spodziewam. Gdy ta sama treść jest określana jako zewnętrzna <img />, oba kręgi również się wyświetlają.

<!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> 

UPDATE: wydaje się działać w Chrome 39.

+0

_i think_, kolejność jest ważna, przynajmniej spec tak mówi - http://www.w3.org/TR/SVG/render.html#RenderingOrder - więc masz, _prawdopodobnie_, uruchomić jeszcze jeden błąd webkita. – c69

+0

Do malowania masz absolutną rację, robią. W tym przypadku odwołuję się do innego elementu (który w rzeczywistości nie zostanie namalowany). Nie jestem pewien, czy musisz zadeklarować elementy, zanim będziesz mógł z nich korzystać (np. Kompilatory old school, w których możesz tylko wywoływać funkcje, które zadeklarowałeś). – R0MANARMY

+1

Zgadzam się z Tobą, to musi być błąd. Mechanizm odwoływania "xlink: href" ma niestety kilka wad w pakiecie Webkit. –

Odpowiedz

Powiązane problemy