Safari browser (I'm testing under windows) seems having problem in displaying Svg Image element.
<!DOCTYPE html>
<html>
<body>
<h1>My first SVG</h1>
<img src="image.svg" />
</body>
</html>
And here is the content of the image.svg:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<rect x="50" y="50" width="100" height="100" style="fill:blue"></rect>
<rect id="foo" x="50" y="150" width="500" height="500" style="fill:green"></rect>
<image x="50" y="10" width="200" height="200" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="></image>
</svg>
Is there any solution or workaround to make this work in Safari?
I just discovered this same problem when I checked an app I was working on in Safari, after having been using Chrome most of the time. I wrote this bit of TypeScript/jQuery code (easily enough turned into plain JavaScript) to solve the problem:
For me the problem was that I was using the
href
attribute without any problem in Chrome. For it to work properly in Safari, you need to usexlink:href
. Keep in mindxlink:href
is deprecated and is being replaced byhref
. However, it is not yet supported in Safari.https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/href
I think there are two problems here:
You haven't said anything about how large your SVG image is. As a rule, you should at least include a
viewBox
attribute in the<svg>
tag. For example:The other problem is that Safari isn't particularly brilliant at rendering SVGs. However, it tends to do better when you embed them with an
<iframe>
or<object>
tag instead of using<img>
. For example:Also, make sure your server is delivering SVG content with the correct MIME type (
Content-Type: image/svg+xml
), as this can cause problems too.So give this a try:
HTML source:
image.svg: