2010-05-01 16 views
4

J'ai fait l'observation suivante:SVG avec des images externes ne les charge pas lorsqu'il est incorporé avec l'étiquette <img> dans les navigateurs

Si je crée une image svg qui fait référence à une image raster externe via xlink:href et essayer de charger le svg les navigateurs, les images externes ne sont affichées que si j'utilise la balise <object>, mais pas lorsque j'utilise la balise <img>.

Le rendu avec le tag <object> est assez lent et n'est pas aussi propre que l'utilisation de la balise img pour les images. Je me demandais donc s'il était possible de le faire fonctionner avec la balise <img>. Au début, je pensais que cela ne fonctionnait pas à cause d'une même politique d'origine, mais même si l'image référencée est dans le même répertoire et que je la référence par son nom seulement, elle ne se chargera pas.

Des idées?

+0

Im curieux à son sujet aussi ... alors j'espère que quelques réponses apparaissent :) – Tokimon

+0

bonne question, tag 'image' à l'intérieur de 'svg' fonctionne pour moi dans ff/chrome, mais pas l'opéra ( – tibalt

Répondre

0

<object> ne devrait pas être plus lent à charger que <img> en dehors de l'aspect interaction possible (les img sont statiques tandis que les objets sont des documents entièrement interactifs). Les images à l'intérieur du svg devraient charger dans les deux scénarios, ainsi cela ressemble à un bogue dans le navigateur.

Pourriez-vous poster un lien vers votre exemple?

1

Utilisez-vous IE? IE ne reconnaît pas SVG de toute façon. Microsoft a toujours dix ans de retard, mais ils sont plus populaires et beaucoup plus coûteux, pour une raison quelconque. Nom de la propagande de marque?

SVG se charge dans Firefox. À la fois en tant que document XML référencé directement dans l'URL, et également si vous l'intégrez dans un document XHTML (entièrement compatible XML) avec un espace de noms approprié, le fichier SVG doit s'afficher correctement. La grande chose à propos de cette option est que DHTML peut manipuler votre SVG. Tout ce que j'ai dit dans ce paragraphe s'applique également à MathML, si vous êtes curieux. En outre, SVG ne charge pas à partir d'une étiquette d'image. Je crois que Firefox travaille sur cette mise à niveau, cependant. Je ne suis pas entièrement sûr. L'utilisation de l'objet ou du tag embed est raisonnable, je suppose ... mais l'un de mes correctifs précédents consistait à utiliser un iframe. Incorporer un iframe dans votre code HTML qui fait référence au fichier SVG complet. En utilisant CSS, vous pouvez faire en sorte que l'iframe soit aligné sur le reste de votre document, apparaissant et agissant comme une image. Encased dans une balise div ou span, vous pouvez avoir des gestionnaires d'événements onhover et onclick. En utilisant la balise image, votre src peut être un fichier PHP côté serveur. Si correctement codé et avec les applications cgi appropriées, vous pouvez pixelliser votre SVG côté serveur, et avoir ces données PNG renvoyées à votre image via le src PHP.

+0

SVG travaille pour moi dans un tag d'image dans firefox et a pour au moins un an. [La première image de cette page] (http://games.greggman.com/game/webgl-3d-perspective/) est un svg utilisant un tag d'image. -comprend ton commentaire? – gman

0

Je pense que vous avez au moins 10 mois de retard ... IE9 prend en charge SVG, et les versions préliminaires (y compris une version bêta) sont sorties depuis longtemps. Jetez un coup d'œil à www.ietestdrive.com pour voir l'aperçu de la plateforme - c'est plutôt bien. À mon avis, certaines parties de leur support SVG sont beaucoup mieux que Firefox actuellement (mais ils ne supportent pas encore SMIL).

+2

Si vous souhaitez créer un site Web ces jours-ci, vous devez prendre en charge un large éventail de navigateurs, donc se concentrer sur les derniers et les plus grands n'aide pas, sauf si vous voulez faire une démo technique. – mat3001