How to dynamically add a viewBox (Was: Re: [svg-developers] Re: Opera/FF/ASV behaviour on oversized SVGs)
Jonathan,
I'm afraid that the script solution isn't going to work when the images
are from another domain, but here's an example that works in Opera 9.5:
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<animation xlink:href="bricky.svg" width="400" height="400"
onload="fixup(this)"/>
<script><![CDATA[
function fixup(elm)
{
var svgns = "http://www.w3.org/2000/svg";
var docelm = elm.contentDocument.documentElement;
if(!docelm.hasAttributeNS(svgns, "viewBox"))
{
var viewbox = "0 0 " + docelm.getAttribute("width") + " " +
docelm.getAttribute("height");
docelm.setAttributeNS(svgns, "viewBox", viewbox);
}
}
]]></script>
</svg>
You should put this image[1] in the same directory as the svg. If you want
you can replace "contentDocument" with "getSVGDocument()", but note that
getSVGDocument() has been deprecated by the SVG WG in favor of
contentDocument[2].
Of course one might also generate the viewBox based on the boundingbox of
the root element, which is likely to work better in some cases (though it
is hard to calculate the "true" boundingbox that includes filter effects,
stroke, markers etc).
Cheers
/Erik
[1] http://clipart.nicubunu.ro/svg/pacman/bricky.svg
[2] http://lists.w3.org/Archives/Public/www-svg/2008Feb/0060.html
On Fri, 07 Mar 2008 16:47:59 +0100, ~:'' ありがとうございました。
<j.chetwynd@...> wrote:
> Erik,
>
> do you have a script that works in the general case?
>
> It would be convenient, for a project under development...
>
> cheers
>
> >> It's rather trivial for the user agent to do, and it's still
> possible to do
> using script I believe
>
> Jonathan Chetwynd
>
> j.chetwynd@...
> http://www.peepo.com/
>
> +44 (0) 20 7978 1764
>
>
> On 7 Mar 2008, at 12:14, Erik Dahlström wrote:
>
> On Sun, 02 Mar 2008 02:17:39 +0100, Jeff Schiller
> <jeff_schiller@...> wrote:
>
>> --- In svg-developers@yahoogroups.com, Jonathan Watt <jwatt@...>
>> wrote:
>>>
>>> Firefox 3 betas should now be doing the spec mandated overriding of
>> the width
>>> and height of the SVG just as ASV does. The behavior of Firefox 2 is
>> just plain
>>> broken I'm afraid (it shouldn't scroll).
>>>
>>> I also checked the link above in Opera 9.50 beta build 9815 and
>> Safari 3.0.4
>>> (523.15) and they have the same broken behavior of Firefox 2
>> (scrollbars).
>>
>> Jonathan,
>>
>> This is great news - I had no idea. This means that the large volume
>> of art on places like openclipart.org are going to be much more
>> directly usable for web page art in the future (if Opera and Safari
>> clean this up).
>
> Well, the scrollbars would go away for <object> and <embed>. That's all.
> If the svg content doesn't specify the viewBox the content will not
> scale
> to the defined viewport, it will be clipped.
>
>> At the moment, I have to tidy up clip art by removing the width/height
>> attributes on the <svg> element and adding a viewBox. With the proper
>> overriding, this would no longer be necessary.
>
> The viewBox would still have to be added. However, viewBox
> synthesizing is
> a feature that could be added to SVG 1.2 Full if there's need for it.
> It's
> rather trivial for the user agent to do, and it's still possible to do
> using script I believe (or of course as you note, by manual editing).
>
> Cheers
> /Erik
>
--
Erik Dahlstrom, Core Technology Developer, Opera Software
Co-Chair, W3C SVG Working Group
Personal blog: http://my.opera.com/macdev_ed
Hello, I recognized three different behaviours at three different browsers, when a svg image is bigger than its embed tag. ASV and firefox 3: Make the...
Stefan, not sure of your intention, but viewbox is one way: http://www.peepo.com 'bigger' seems a strange concept when relating SVG and html cheers Jonathan...
... Can you provide a link to an example? As far as I'm aware ASV has always overridden the width and height of the SVG with the width and height of the ...
Jonathan Watt
jwatt@...
Mar 1, 2008 9:23 pm
... the width ... just plain ... Safari 3.0.4 ... (scrollbars). Jonathan, This is great news - I had no idea. This means that the large volume of art on...
Jeff & Doug is there, or more properly does the spec 'mandate', any way to get a similar behaviour in pure SVG? ie so that one can be sure that any SVG will...
On Sun, 02 Mar 2008 02:17:39 +0100, Jeff Schiller ... Well, the scrollbars would go away for <object> and <embed>. That's all. If the svg content doesn't...
Erik, do you have a script that works in the general case? It would be convenient, for a project under development... cheers ... possible to do using script I...
Jonathan, I'm afraid that the script solution isn't going to work when the images are from another domain, but here's an example that works in Opera 9.5: <svg...
Erik, I have to say first that viewbox has taken me a long time to understand at all. it may be my introductory texts were not ideal.... the task of rapidly...
Jonathan, If the content is outside the window that's usually the intention of the author, at least in the Inkscape cases. If the viewBox attribute isn't...
Erik, that does seem closer to my rather limited understanding, however there's an additional issue, in that this discussion has so far been limited to...
On Sat, 01 Mar 2008 22:23:22 +0100, Jonathan Watt <jwatt@...> wrote: ... Just to be clear, this[1] is the relevant part of the spec you're talking about,...
Hi Stefan, I have a control for panning and zooming of a pure SVG file of 100% width and height, with the control kept always on focus. It works for Firefox 2...