On 8/31/17 3:00 PM, Michael Froman wrote:
If I disable Ghostery, it no long appears to happen for me.  YMMV.

Michael,

Thank you. So with Ghostery installed, I managed to reproduce a flash of unstyled content when doing a force-reload of https://github.com/servo/servo

That's because Ghostery does a .clientHeight get with this stack:

0 setBoxHeights() ["moz-extension://8ecb1f2d-060f-ce44-96ed-44895f11ca4b/dist/purplebox.js":128] 1 handleMessages(request = [object Object], sender = [object Object]) ["moz-extension://8ecb1f2d-060f-ce44-96ed-44895f11ca4b/dist/purplebox.js":448]

(the rest is less important).

I reported this issue to them (copy/paste of my report below) through the form at https://ghostery.zendesk.com/hc/en-us/requests/new but if someone has better contact info that might be nice.

-Boris

Report I sent:

STEPS TO REPRODUCE:

1)  Install Ghostery in Firefox.
2)  Load https://github.com/servo/servo/
3)  Force-reload a few times.

ACTUAL RESULTS: Eventually you get a flash of unstyled content: content being rendered before the stylesheets are loaded.

EXPECTED RESULTS: No flashes of unstyled content.

DETAILS: The flash of unstyled content is due to Ghostery forcing a layout before the stylesheets are loaded. This happens when the setBoxHeights() function, in purplebox.js is called from handleMessages(), which is handling the 'createBox' message.

setBoxHeights does this:

    windowHeight = doc.documentElement.clientHeight * 0.85 - 35;

which forces layout of "doc" which in this case is the webpage being loaded. If all you want is the height of the window that document is in, possibly with some adjustments, you could use `doc.defaultView.innerHeight`, or `win.innerHeight` if "win" is the window for "doc". The innerHeight getter doesn't need to perform layout within the window itself, and won't cause this problem.

It might also be possible to not do 'createBox' until layout has started on the page. I'm not sure that point in time is exposed to extensions at the moment, but we might be able to add a notification that exposes it. What I don't know whether that's a viable option in your case; it's possible that you need 'createBox' to happen before that point.
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to