Search the web
Sign In
New User? Sign Up
svg-developers · SVG Developers
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Want your group to be featured on the Yahoo! Groups website? Add a group photo to Flickr.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Inline SVG and CSS in IE   Message List  
Reply | Forward Message #62505 of 63202 |
Lots of SVG objects in IE (was Re: Inline SVG and CSS in IE)

Hi Christopher,

Three comments:
IE is not happy unless the embed is sitting in the page at load,plus it tends to
ingore a dynamic src, and also, in my experience, the wmode seens to add an
excessive overhead to svg rendering.

I'm amazed that you can get at least one svg file to render:). Probably what's
happening is the ones that load, written with your script, do render before IE
decides that the embed wasn't resident. That's confirmed, I think. because of
the randomness of the poor response.

I'm not a cross-browser developer; I create stuff exclusively in IE/ASV...saves
what's left of my sanity.
With that said, I still want to Help.

If the other browser(s) you're trying satisfy have the ability to scrunch down a
span to either zero-size or 1x1 pixel(OK in IE) then
you can open either the object, or embed depending on the browser.
As follows:

<span id=embedSpan style='width:1;height:1;overflow:hidden'>
<embed src=="res/images/foo.svg" width=20 height=20
type="image/svg+xml"></embed>
</span>

<span id=objectSpan style='width:1;height:1;overflow:hidden'>
<object type="image/svg+xml" width="20" height="20"
data="res/images/foo.svg">
<img alt="Foo" src="res/images/foo.png" width="20" height="20"/>
</span>

if IE:
embedSpan.style.overflow=''
embedSpan.style.width=20
embedSpan.style.height=20

That's the only idea I have at present,

Regards,
Francis



--- In svg-developers@yahoogroups.com, "CPK Smithies" <c.1@...> wrote:
>
> Greetings, Francis. This is the sort of thing that I'd be using, e.g.
> for a button icon:
>
> <object type="image/svg+xml" width="20" height="20"
> data="res/images/foo.svg">
> <img alt="Foo" src="res/images/foo.png" width="20" height="20"/>
> </object>
>
> Now this would give an image on a white background, a bit like webkit
> for MacOS/Linux, so to correct this for IE I'd include the following
> script to convert the objects to embeds:
>
> ((begin javascript))
>
> // IE-specific script to improve IE's SVG handling
> if (window.attachEvent) window.attachEvent('onload', function() {
> var obs = document.getElementsByTagName('object');
> for (var i = 0; i < obs.length; ) {
> var ob = obs[i];
> if (ob.getAttribute('type') != 'image/svg+xml') {
> ++i;
> continue;
> }
> var em = document.createElement('embed');
> var copyatt = [
> 'id', 'width', 'height', 'marginLeft', 'marginRight', 'marginTop',
> 'marginBottom', 'float', 'clear'
> ];
> em.setAttribute('src', ob.getAttribute('data'));
> em.setAttribute('wmode', 'transparent'); // important for IE
> em.setAttribute('type', 'image/svg+xml');
> var j;
> for (j = 0; j < copyatt.length; ++j) {
> var att;
> if (typeof ob.attributes[att = copyatt[j]] != 'undefined' &&
> ob.getAttribu
> em.setAttribute(att, ob.getAttribute(att));
> else if (ob.style[att] != "")
> em.style[att] = ob.style[att];
> }
> while (j = ob.firstChild) em.appendChild(ob.removeChild(j));
> ob.parentNode.replaceChild(em, ob);
> }
> });
>
> ((end javascript))
>
> This would be in a page conforming to XHTML 1.1.
>
> As I say, the problem would typically manifest itself by some of the SVG
> images simply not loading (even if the self-same image were already
> displayed elsewhere on the page). Typically the code to generate the
> HTML would be generated by the exact same script in every case, so no
> individual variations. And the loading/non-loading would be random -
> sometimes all there, sometimes two or three missing, hardly ever the
> same twice. And this with exactly the same being served to the client.
>
> The SVGs would be small and basic, none including raster components,
> just a few paths, but some containing script.
>
> Kindest regards,
>
> Christopher Smithies
>
>




Fri Jul 3, 2009 12:02 am

fhemsher
Offline Offline
Send Email Send Email

Forward
Message #62505 of 63202 |
Expand Messages Author Sort by Date

Hi, I have to create a html file containing multiple svg objects. The html page should be displayed local on the pc using MS Internet Explorer 7. I tried the...
alexgreindl
Offline Send Email
Jul 1, 2009
6:09 pm

I have not attempted inline SVG with IE. However, I wanted to raise a related issue about multiple SVG objects in IE. My experience of including multiple SVG...
CPK Smithies
cpk.smithies
Offline Send Email
Jul 2, 2009
1:36 pm

... Hi Christopher, I haven't had this problem. I haven't forced a test yet. but I've had 20-30 svg embeds in the past. Could you post a typical html segment...
Francis Hemsher
fhemsher
Offline Send Email
Jul 2, 2009
7:00 pm

Greetings, Francis. This is the sort of thing that I'd be using, e.g. for a button icon: <object type="image/svg+xml" width="20" height="20" ...
CPK Smithies
cpk.smithies
Offline Send Email
Jul 2, 2009
10:08 pm

Hi CPK, I would love to get this code as a test case for the SVG Web project to test real world usage. Can I grab it from you? I would have to adapt it a bit...
Bradley Neuberg
bradneuberg
Offline Send Email
Jul 2, 2009
10:53 pm

Hi Christopher, Three comments: IE is not happy unless the embed is sitting in the page at load,plus it tends to ingore a dynamic src, and also, in my...
Francis Hemsher
fhemsher
Offline Send Email
Jul 3, 2009
12:53 am

Hi Christopher, The script cannot work because it tries to remove children from obs while working with its length, which is live for getElementsByTagName. ...
Domenico Strazzullo
domenico_str...
Offline Send Email
Jul 4, 2009
11:59 am

... From: svg-developers@yahoogroups.com [mailto:svg-developers@yahoogroups.com]On Behalf Of Domenico Strazzullo Sent: 04 July 2009 12:59 ... obs while working...
CPK Smithies
cpk.smithies
Offline Send Email
Jul 4, 2009
12:31 pm

... True, I missed it. The script shouldn't work anyway because you can't append fallback content elements to <embed>. HTML 5 doesn't allow that either, if I...
Domenico Strazzullo
domenico_str...
Offline Send Email
Jul 4, 2009
4:15 pm

... content elements to <embed>. HTML 5 doesn't allow that either, if I read well. < Let us agree that the script would not work (or even exist) in an ideal ...
CPK Smithies
cpk.smithies
Offline Send Email
Jul 5, 2009
1:51 am

Results from http://smithies.org/cpks/test/ IE = v:8.0.6001.18783 IE64 = v:8.0.6001.18783 64-bit Edition Testing both versions on a 64-bit system. IE64 With...
Domenico Strazzullo
domenico_str...
Offline Send Email
Jul 6, 2009
8:37 am

Can I get some test cases around this? I want to see if the SVG Web toolkit we are building suffers from this, and to find workarounds if necessary....
Bradley Neuberg
bradneuberg
Offline Send Email
Jul 2, 2009
9:58 pm

Hi Alex, ... [...] ... [...] ... Yes, I haven't tested for sure but inline CSS should work. The problem here seems to be the CSS selector ("*"), which as far...
Helder Magalhães
heldermagalhaes
Offline Send Email
Jul 2, 2009
3:12 pm

Hi Helder, thanks for answer. I tried simpler CSS but it seems that IE ignors any CSS classes. Regards, Alex...
alexgreindl
Offline Send Email
Jul 4, 2009
2:15 pm
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help