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