Smart work, String. And your workaround works well except in one instance; because you're assigning an alias to a window object property by setting window._IG_AdjustIFrameHeight, if more than one instance of the gadget is embedded on a page, it causes the heights of all the instances of the gadget to become linked; if one is resized, they all resize.
Would it be better in your workaround to reset, instead of this window.property, the var itself by changing it to: if (!!gadgets && !!gadgets.window && !!gadgets.window.adjustHeight) _IG_AdjustIFrameHeight = gadgets.window.adjustHeight; ? E On Jun 24, 4:20 am, String <[email protected]> wrote: > On Jun 24, 12:10 am, skeeJay <[email protected]> wrote: > > > The problem is that when the gadget uses the new embedding method, it > > breaks _IG_AdjustIFrameHeight. Consistently, every single time, the > > gadget is incapable of resizing itself. > > You're absolutely right. _IG_AdjustIFrameHeight is well and truly > broken in syndication. I've been able to reproduce this for my own > gadgets, and I'm posting my findings here in the hope of convincing > Google that we aren't all just imagining this. > > First, here are my URLs. > The gadget I'm testing with:http://gad.getpla.net/feed/reader.xml > A syndicated page where you can find it:http://gad.getpla.net/feed/ > Just to be clear, the issue is that its iframe should adjust in size > to nicely fit the retrieved feed content, and half the time it > doesn't. Refresh the page a few times if you need to, until the feed > content in the gadget is cut off. > > As skeeJay said, it's definitely linked to the domain from which the > gadget iframe is served. Digging into the API's JS code, I find that > the new (broken) domain is actually defining _IG_AdjustIFrameHeight > TWICE. First is this: > > var _IG_AdjustIFrameHeight = gadgets.window.adjustHeight; > > Looks fine, it's just being set up as an alias for the gadgets.* > equivalent. But then later in the iframe source is another definition, > which looks like this (de-obfuscated for clarity): > > _IG_AdjustIFrameHeight = function(opt_height) { > if(typeof opt_height != "undefined") { > gadgets.window.adjustHeight(opt_height); > } > > }; > > Notice anything funny there? In the second definition (which replaces > the first), _IG_AdjustIFrameHeight expects to be passed the target > height - and if it's not, the underlying gadgets.window.adjustHeight > never gets called. Is it any surprise that our (parameter-less) calls > to _IG_AdjustIFrameHeight aren't working? What was Google thinking, > releasing code like this into production? > > Fortunately, there is an easy workaround: simply redo the alias > yourself. Insert this code before your first call to > _IG_AdjustIFrameHeight: > > if (!!gadgets && !!gadgets.window && !!gadgets.window.adjustHeight) > window._IG_AdjustIFrameHeight = gadgets.window.adjustHeight; > > This seems to work on both the old and new domains. I suggest adding > this to any dynamic-height gadgets in syndication until Google either > fixes the gadgets.* platform or rolls us back to Legacy. > > FWIW, I'm not seeing this erroneous second definition on iGoogle, > either in the sandbox or the live page. IOW, this isn't the same > problem that's plaguing _IG_AdjustIFrameHeight on iGoogle. Maybe I'll > dig into that one next. :^) > > String --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "iGoogle Developer Forum" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/Google-Gadgets-API?hl=en -~----------~----~----~----~------~----~------~--~---
