• Resolved peter

    (@dewebbouwmeester)


    Hi Tobias,

    Thanks for the great plugin that TablePress is!

    I ran into a (literally) blocking issue on IE8 where the page of a website would completely freeze on downloading tablepress.eot.
    Or in fact: the eot is succesfully downloaded according to fiddler2 even if the browser shows it’s still downloading that particular file. So it must be the parsing somehow.

    Further to http://wordpress.org/support/topic/incompatibility-with-better-wordpress-minify i dug into the specifics of cross-browser font rendering and this is what i came up with:

    * When retieving a page with tablepress css in IE8 (the real one in a virtualbox, not the compat mode of ie9) the page _completely_ freezes up. Basically it’s the ‘totally blank’ scenario in http://www.stevesouders.com/blog/2010/06/01/frontend-spof/ – that doesn’t come to an end in this particular case.

    * trail and error shows that this is caused by the _relative_ references to the eot in tablepress’s default.css. I thought IE8 _could_ handle _relative_ uri’s in css (in contrast to IE6) but apparently this is not the case for this particular situation of a composite font-face declaration.

    * so a solution could be: make the uri’s in the font-face declaration in default.css absolute. Indeed: that works and ie8 now renders the page as it’s supposed to.

    * now, according to http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax you need two font-face declarations if you want to use data-uri’s as well. I’m not sure if that is better or even necessary but did have a look at it. And indeed: if i split the existing font-face declaration into two parts as per their instructions, all works well, even with _relative_ uri’s. So this could also be the way to go.

    * that still leaves us with the spof mentioned in Steve’s article above. And potentially a performance penalty. In that same article he details that font-face declarations should best be specified as an inline style. Also ref http://www.stevesouders.com/blog/2009/10/13/font-face-and-performance/. So ideally the font-face src declarations would be moved out of default.css to an inline style block. Obviously here we need to apply absolute uri’s once again.

    All in all these three scenario’s seem to work cross-browser, including native ie8, solving the issue with the page not rendering.
    I hope you can have a look into this and possibly enhance tablepress.

    Cheers,
    Peter

    http://wordpress.org/extend/plugins/tablepress/

Viewing 5 replies - 1 through 5 (of 5 total)
  • Hi Peter,

    thanks for your post, and sorry for the trouble!
    Also, thanks for that extensive research that you have done here! I’ll take a more detailed look into the different suggestions shortly and reply with feedback.

    Now, here’s the weird thing: I have not yet received a report on the eot fonts blocking an entire page in IE8. The only things were “Not found” issues, as in that first link you provided. Also, I can not reproduce this in a native IE8 nor an IE9 with compatibility mode.
    So, to further investigate this:
    – What happens when you access http://tablepress.org/demo/ (or even http://tablepress.org/ for that matter) in your IE8? According to your description, this page should block, too?
    – Can you post the link to the page with the table for which this happens to you? I can then try that page in my IE8, to see if that breaks.

    Regards,
    Tobias

    Thread Starter peter

    (@dewebbouwmeester)

    Hi Tobias,
    Thanks for the suggestions; they were helpful for some further investigation. Here’s what i found.

    First of all: I think this page block will hardly ever occur. Today i managed to further pinpoint the circumstances and, well, i guess it was just an amazing coincidence that this user ran into this issue 🙂

    What’s needed to reproduce:
    – a specific installation (more on this follows)
    – native IE8 with an empty cache
    – direct access to a page where tablepress is used

    Especially the last point is interesting: as stated before, the eot file _is_ downloaded, even if IE8 says it’s not. This download happens for any page, with or without tablepress on it. And once the eot file is present, no blocking occurs anymore
    Thus if i first visit home (the eot is loaded but there are no tablepress tables to parse) and next go to a page _with_ a tablepress table, the page will just render as it is supposed to.

    Next i tested the order of css files being loaded, by moving my own theme css files up in front of tablepress’s default.css. And no more blocking as a result..! So there’s a conflict between default.css and my theme css.
    My custom theme is based on twitter bootstrap. The css that comes with it just does not validate at all out-of-the-box; alas no way i could try and determine where things could go wrong.

    I went to have a look at tablepress.org/demo and the page loads just fine in native IE8. What surprises me, however, is that the table header lacks the sorting symbols – exactly the output that requires the font-face / eot file?!

    All in all, I think the issue i ran into, might be a bit too specific. Nevertheless, maybe some of the findings could be useful. If so, you might also want to have a look at the woff data uri: i believe css3 requires quotes around that src url string – but alas that didnt solve my issue either.. 🙂

    Kind regards,
    Peter

    PS I’ll try and send you a link to the failing site by email; i’d rather not have that address in the open.

    Hi Peter,

    thanks for those information, and also for the links in your email!

    This seems to be a very, very special case then, as it is not reproducable reliably. I guess that this is just one of these quirks in IE…

    I checked the links from your first post, and as far as I can see, I’m using the recommended CSS for the @font-face declaration, except maybe for the handling of the data-uri.
    The other ideas, like using absolute URLs or shifting the @font-face to inline CSS are not really a reliable solution for TablePress, as they are either not possible (the absolute URLs in the CSS file) or have other drawbacks (the inline CSS, as it would take away the benefit of the cached data-uri).

    So, given that this seems to be a real edge case scenario for your user, and that IE8 is (hopefully) losing market share soon, I’m not sure that there’s a quick and easy enhancement here.

    And you are right about http://tablepress.org/demo/ I can reproduce that the arrows don’t show up right now in IE8 (but without any blocking of the page). This is probably a different issue though, as I have been playing around with the fonts and the CSS on that page a little bit. The page doesn’t actually use the font that ships with TablePress, but an extended version that also has a few more icons/images that are used throughout the page. I’ll look into that shortly.

    About the quotes: No, the url() attribute does only require quotes if the string contains “special” characters, that need escaping. As the data-uri is all letters and numbers, that’s not necessary here.

    Thanks again for all your work on this!

    Regards,
    Tobias

    Thread Starter peter

    (@dewebbouwmeester)

    Hi Tobias,

    Thanks very much for your thoughts and feedback.

    I can see how this is an edge case that will hardly ever occur – if it occurs at all for other sites. IE marketshare is dropping real fast; IE8 should be gone and forgotten in no time! 🙂

    Thanks again for all your effort.

    Kind rgards,
    Peter

    Hi Peter,

    absolutely, you are very welcome!
    And yes, IE 8 will hopefully go away quickly!

    Best wishes,
    Tobias

    P.S.: In case you haven’t, please rate TablePress here in the plugin directory. Thanks!

Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘Error loading tablepress.eot in IE8 causing site to hang’ is closed to new replies.