Rubén, miembro de nuestro staff, nos hizo el favor de crear esta sección porque domina perfectamente este tema.
Solución:
En el
etiqueta dentro del elemento svg, href
funciona bien en Chrome. Para trabajar en versiones anteriores de Safari, necesita xlink:href
. (También se aplica a la etiqueta.) Tenga en cuenta
xlink:href
está en desuso y está siendo reemplazado por href
. Sin embargo, no fue compatible hasta Safari 12.
https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/href
Creo que aquí hay dos problemas:
-
No has dicho nada sobre el tamaño de tu imagen SVG. Como regla general, debe incluir al menos un
viewBox
attribute en eletiqueta. Por ejemplo:
-
El otro problema es que Safari no es particularmente brillante en la representación de archivos SVG. Sin embargo, tiende a funcionar mejor cuando los incrustas con un
o
etiquetar en lugar de usar
Además, asegúrese de que su servidor entregue contenido SVG con el tipo MIME correcto (
Content-Type: image/svg+xml
), ya que esto también puede causar problemas.
Así que prueba esto:
fuente HTML:
My first SVG
imagen.svg:
Acabo de descubrir este mismo problema cuando revisé una aplicación en la que estaba trabajando en Safari, después de haber estado usando Chrome la mayor parte del tiempo. Escribí este fragmento de código TypeScript/jQuery (que fácilmente se convirtió en JavaScript simple) para resolver el problema:
export function setSvgHref(elem: JQuery, href: string)
elem.attr('href', href);
if (isSafari())
elem.each(function()
this.setAttributeNS('http://www.w3.org/1999/xlink', 'href', href);
);
Si estás de acuerdo, puedes dejar un escrito acerca de qué le añadirías a este post.