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.
The right car accident lawyer can boost your settlement significantly. I found helpful tips through truck .
I love how Yuko Inaba’s fan discussions in Japan often zero in on her ability to blend subtle emotion with an almost understated strength—something that’s pretty rare among actresses of her generation https://pastelink.net/jscfhim7
https://cap-games.jp/ にアクセスして、SEKIRO、DARK SOULS、FINAL FANTASY、Bloodborne など、人気ゲームについて学んでください。また、有名ゲームの興味深いレビューも掲載されています
Att ha ett bra samarbete med sin # anyKeyword# gör hela processen enklare. notfall elektriker
The user experience on Peerberry looks appealing; any thoughts on their client assistance? Maclear platform review
Начинает формироваться мнение. купить кокаин мефедрон гашиш бошки лирика Все отлично безумно рад что доверился данному магазинуНаконец-то пришёл товар. Упакован отлично курик все передал в этом проблем нет. Пришли домой распечатали по виду похоже на регу но в воде разболталось. Муж поставился внутривенно я отписала chemical он говорит мол для вв нет инструкции. Похуй растворили в воде выпилиИ НИХУЯ НОЛЬ Не прихода ни тяги ни хуяги. Пусто. В аське пишу молчит. Хз.
Love the pergola idea over a hot tub. Saw weatherproof design tips on hot tubs .
This was a fantastic read. Check out horario y ubicación colchonería Albacete for more.
Thanks for the insightful write-up. More like this at tricología Albacete .
This was very insightful. Check out recuperación injerto capilar Jaén for more.
I found this very interesting. For more, visit derecho laboral Coruña .
Urban Hub Designs – Well-structured pages and modern aesthetics improve navigation speed.
Shop Today Picks – The product selection looks appealing, and the interface is user-friendly.
I’ve heard excellent reviews about cheap movers Allentown in the area. Allentown Mover’s Systems
This was very enlightening. For more, visit dónde encontrar colchones en Albacete .
Day care facilities play such a vital role in very early youth growth. I discovered important info concerning numerous programs at affordable daycare San Mateo that can assist moms and dads choose carefully.
Your list of common insurer tactics is eye-opening. accident attorney helps you prepare responses.
วิจารณ์เกี่ยวกับคุณภาพของไฟหน้ารถ LED BT PREMIUM ครับ หลอดไฟ รถ
Great to peer the bake experiment! I used the Parini skillet for cornbread and measured crust evenness—results the following: Parini cookware performance review
The condominium emptiness research used to be effective. Gold Coast buyers agent Savvy Fox aligned us with low-vacancy pockets.