Yesterday I was working on a site that needed an iframe embedded in the page whose content came from a completely different domain. I try to steer clear of iframes at all costs normally so forgive me if what I’m about to say is pretty obvious.
I didn’t want the content in the iframe to appear as though it was in an iframe, so obviously I stripped off all the default browser styles…well, the border. I wanted the iframe to be as high as the content it was containing so that no scroll bars would appear.
So what I did was just give the iframe a height, however when the user navigated to a different page within the iframe, the height I had previously set was too big or too small.
I instantly thought “right, JavaScript will sort this out for me!” and proceeded to quickly code up a function that would inspect the scrollHeight of the content in the iframe and adjust the iframe height accordingly.
No! Said cross domain policy. I had momentarily forgotten all about that. Since the iframe content came from a different domain, I wasn’t allowed to access the document object of the iframe (or vice versa).
Firefox says “Error: Permission denied to access property ‘document’” and other browsers similar.
I started searching for some kind of workaround. Of course there isn’t really one…except I did find an interesting hack for Firefox. Which is – an iframe document can alter the url fragment of the parent window’s location object! ha madness.
The idea is that the document in the iframe alters the url fragment to read:
http://freestyle-developments.co.uk/blog/?p=150#138
Where 138 is the height of the iframe document (obviously you could be a bit more fancy and send other parameters and name them e.g #height:138 but for simplicity I’ve just set the value). The parent then reads this value and sets the iframe height accordingly:
var iFrameHeight = parseInt(location.hash.replace('#', ''));
So…yeah, that’s pretty interesting, but not really a solution. Check out the example implementation here.
Anyway, what to do? HTML5 web messaging to the rescue! Sweet! HTML5 web messaging is cross domain messaging done right. Not only does the messenger choose who should receive messages, but the recipient also chooses who to receive messages from.
The idea is that after the iframe document has loaded, it sends a message to the parent window telling it what it’s scrollHeight is. The parent listens for messages, and sets the height of the iframe when it receives a message.
A couple of things to note:
- There has to be communication between the two documents. i.e. the document on the external domain needs to actively send this message. Which can be a complete show stopper if you have no control over the document on the external domain
- This isn’t going to work on IE < 9. I tested the implementation linked below is working on FireFox 4 (Beta 7), Safari 5.0.2, Chrome 8, Opera 10.63 and Internet Explorer 9 Platform Preview 7. Which is a pretty good spread to be honest
Check out the example HTML5 web messaging implementation here.
On-name rotations are easier with clean dashboards. We observe queue health in it support services to balance workload.
Tomorrow Living Finds – Fresh designs presented in an orderly way.
The section on safety around skylights was useful. We chose Roof Cleaning for Roof Cleaning | Space City Washing.
Effective bug removal on summer routes— Mobile Truck Washing Mobile Truck Washing handles it without scratching.
I have actually been thinking of constructing an outside deck for summer barbecues. What products do you recommend for toughness? I found some useful ideas on replacement windows .
Timber Crest Lifestyle – Beautiful gallery setting, every item feels unique and well-placed.
Our movers wrapped furniture and TVs like pros. If you need quality in Decatur, see Jacksonville movers .
This was a fantastic read. Check out reclamaciones e indemnizaciones Santiago for more.
Loved the reminder to label boxes. Cheap movers Washington DC used color-coded labels for each room.
Sustainable Lifestyle Hub – Browsing feels responsible and effortless, with excellent products.
Thanks for the useful suggestions. Discover more at mobile auto glass sanford .
The flexibility of backyard decks is remarkable! You can tailor them to fit any style or function you require. I just recently discovered some ingenious ideas for multi-level decks at deck builders that might really elevate your outdoor space.
The anatomy maps on botox injections Shelby Township made me appreciate why injector training matters so much.
Password policies need modernization. We followed NIST-aligned guidance from IT Services .
Moving in the summer heat? Local Atlanta movers from Atlanta moving company worked fast and kept everything secure.
Fashion Finds Center – Products arranged nicely, site navigation is quick and pleasant.
This helped me avoid common mistakes. I found a handy checklist at botox near me that complements it.
Интернет на даче был нужен срочно и мобильное решение оказалось самым быстрым. Специалисты приехали оперативно и всё установили. Сигнал усилили антенной. Интернет работает стабильно. Отличный сервис и результат: https://podklychi.ru/
Love the reminder about mouthguards for sports. Our family dentist fitted custom ones, and we first read about the benefits on Oxnard Dentist .
Great info on treating chipped teeth quickly. I saved a local Camarillo contact from Camarillo dentist .
Rice makers with voice prompts sounded gimmicky, however they the fact is lend a hand. Saw a number of wise selections on top-rated rice cooking appliances that surprised me.
Appreciate the comprehensive advice. For more, visit sams signs vehicle wraps .