- From: Tab Atkins Jr. <jackalmage@gmail.com>
- Date: Wed, 14 Mar 2012 07:51:31 -0700
- To: Philippe Le Hegaret <plh@w3.org>
- Cc: Cameron McCormack <cam@mcc.id.au>, spec-prod <spec-prod@w3.org>
On Wed, Mar 14, 2012 at 7:02 AM, Philippe Le Hegaret <plh@w3.org> wrote:
> On Wed, 2012-03-14 at 11:37 +1100, Cameron McCormack wrote:
>> Do you have a concrete suggestion on how to implement this fallback? I
>> cannot think right now of a way to do this without script, for example:
>>
>> <!DOCTYPE html>
>> <style>
>> body.no-inline-svg svg,
>> .svg-fallback { display: none }
>> body.no-inline-svg .svg-fallback { display: initial }
>> </style>
>> <body>
>> <svg></svg>
>> <script>
>> var e = document.getElementsByTagName("svg")[0];
>> if (e.namespaceURI != "http://www.w3.org/2000/svg") {
>> document.body.className = "no-inline-svg";
>> }
>> e.parentNode.removeChild(svg);
>> </script>
>> <p>Consider the following diagram:</p>
>> <svg>
>> <path d="..."/>
>> </svg>
>> <img class=svg-fallback src=diagram.png>
>
> That would work for me at least. It guarantees that you'll see something
> independently of whether scripting is enabled or not.
Here's something even simpler:
<!doctype html>
<figure>
<svg>
<defs>
<foreignObject>
<img src="fallback.png" />
</foreignObject>
</defs>
...real image here
</svg>
<figcaption>I'm an image!</figcaption>
</figure>
In UAs that support SVG, the <img> will never be rendered. In UAs
that don't, you'll just get an <img> wrapped up in a bunch of unknown
inline elements.
~TJ
Received on Wednesday, 14 March 2012 14:52:24 UTC