12
votes

Inline SVG en HTML, avec Firefox 3.5

J'essaie de créer du contenu html / svg mixte et d'avoir des problèmes. Le contenu HTML apparaît comme prévu, mais le SVG inline ne le fait pas. Donc, je fais des expériences.

Je trouve des sites qui ont des exemples de SVG en ligne, et ils rendent correctement sur mon système. Donc, i "Afficher la source de page" et copier / coller le HTML / SVG dans un autre fichier local et ouvrez ce fichier dans Firefox. Aucun SVG inline n'est visible.

J'ai également essayé la même expérience avec chrome, mêmes résultats.

Que pourrais-je manquer?

mise à jour
Légère changement d'identité de ma part: K Montgomery -> Kmontgom sur l'utilisation d'OpenID.

Quoi qu'il en soit, merci à tous ceux qui ont répondu. La meilleure solution était de définir la réponse.Contenttype; Cela me permet de continuer avec l'approche WebForms pour l'instant.

J'avais envisagé de faire du contenu pur xhtml dans des fichiers .xml et d'utiliser ASP.NET MVC pour servir ce contenu. Je peux finir par faire cela à l'avenir.

Maintenant, en avant avec JQuery, SVG et faire quelque chose.

Merci pour toute l'aide.


0 commentaires

7 Réponses :


5
votes

Assurez-vous de nommer le fichier ".xml" non ".html"


5 commentaires

Merci! Ça marche. Maintenant, la prochaine question est de savoir comment créer ASP.NET génère un fichier .xml au lieu de .htm ou .html


'Maquette je ne connais pas la réponse à celle-là


K Montgomery, je suppose que vous pouvez définir une en-tête de type MIME, voir ma réponse pour plus de détails.


Merci pour ce conseil. J'ai passé toute une journée à essayer de faire ce travail. Même la définition d'un méta contenu = Application / XHTML + XML n'a pas fonctionné.


Voici quelques informations supplémentaires à ce sujet. Il y a un différend si le fichier est ouvert localement ou s'il est servi. wiki.svg.org/inline_svg#chooser_a_filename_extension



11
votes

Pour que l'inline SVG soit affichée dans les navigateurs, la page doit être valide XHTML et doit être servie avec Application / XHTML + XML En-tête de réponse du serveur MIME-Type.

Il est également possible de tirer également de l'inline SVG de la page HTML, voir un exemple d'un SVG TIGER Image pouvant également être consultée dans Internet Explorer (5.5+)


3 commentaires

ASP.NET Exemple: intervention.ContentType = "Application / XHTML + XML"


Notez que cela ne devrait pas être un problème dans les futures versions de Firefox. Voir hsivonen.iki.fi/test-html5-parsing


Pour référence, voici une simple page indiquant XHTML + multiple svg + js: phrogz.net/svg/convert_path_to_polygon.xhtml



3
votes

Comme Greg dit, il doit être un fichier que Firefox reconnaît sous forme de fichier XHTML, pas seulement HTML régulier, ce qui est ce que le changement de renommage accompli. Afin de recevoir cela à partir d'une application côté serveur, vous devez définir la touche de la réponse de la réponse sur Application / XHTML + XML .


0 commentaires

13
votes

Une alternative si vous ne voulez pas faire XHTML, c'est à base64 coder les données SVG.

E.g. P>

<object type="image/svg+xml" 
        data="data:image/svg+xml;base64,PCFET0NUWVBFI...etc..."></object>


1 commentaires

C'est un mécanisme intéressant, mais limité (surtout en raison du support de navigateur incohérent). Quelques informations supplémentaires ici: en.wikipedia.org/wiki/data_uri_scheme



0
votes

Comme d'autres notent, tant que vous utilisez XHTML et que vos espaces de noms sont corrects, vous pouvez simplement utiliser la balise directement dans le HTML.

J'ai trouvé à tester que cela ne fonctionnait vraiment que dans Firefox 4 et les constructions récentes Chrome, mais YMMV. Pour des trucs sur un intranet où vous savez que tout le monde utilise un navigateur décent c'est bien.

J'ai fait du Expérimentation dans la génération de SVG en ligne à l'aide de JavaScript . N'hésitez pas à vérifier cela, vous pourriez trouver le code utile.


1 commentaires

Merci Luís, c'est réparé maintenant.



2
votes

Si vous générez de manière dynamique le SVG à l'aide de JavaScript, cela fonctionne en ligne. Au lieu de: xxx

vous écrivez: xxx

Ce n'est pas idéal mais il semble fonctionner.


0 commentaires

1
votes

Pour les personnes ayant ce problème avec ASP.NET, changez le DOCTYPE en HTML5 et Type de contenu à l'application / XHTML + XML, je l'ai essayé sur IE9, FF 3.6 et Chrome 13:

protected void Page_Load(object sender, EventArgs e)
{
this.Response.ContentType = "application/xhtml+xml";
}


0 commentaires