IFRAME contentWindow is null
I like clean code so I do what I can to avoid unwanted JavaScript global variables. I initially thought that keys(window) would give me window property leaks but that didn't work because browsers returned different results, so I moved on to using an IFRAME to compare default window property keys.
When I first tried this method, I got a lame error about an IFRAME element's contentWindow property being null. Ugh. It didn't take long to figure out why: you need to wait until the IFRAME has loaded to get the contentWindow:
var iframe = document.createElement('iframe');
iframe.onload = function() {
// contentWindow is set!
};
iframe.src = 'about:blank';
document.body.appendChild(iframe);
Of course you'll want to add the onload event before setting the src. If you use the load event to check for the contentWindow property, you'll be in business!
![Write Better JavaScript with Promises]()
You've probably heard the talk around the water cooler about how promises are the future. All of the cool kids are using them, but you don't see what makes them so special. Can't you just use a callback? What's the big deal? In this article, we'll...
![Create a Sheen Logo Effect with CSS]()
I was inspired when I first saw Addy Osmani's original ShineTime blog post. The hover sheen effect is simple but awesome. When I started my blog redesign, I really wanted to use a sheen effect with my logo. Using two HTML elements and...
![Form Element AJAX Spinner Attachment Using MooTools]()
Many times you'll see a form dynamically change available values based on the value of a form field. For example, a "State" field will change based on which Country a user selects. What annoys me about these forms is that they'll often do an...
![MooTools Typewriter Effect Plugin]()
Last week, I read an article in which the author created a typewriter effect using the jQuery JavaScript framework. I was impressed with the idea and execution of the code so I decided to port the effect to MooTools. After about an hour of coding...
Don’t you need to append your iframe element to a DOM tree so that the browser fetches its target content ? I mean, I know that old IE will load scripts as you parse an “HTML string” but in modern browsers, I thought that the asset does not get loaded until you append the element to a document (and in my opinion this it what makes constructors such as
Image()so useful).Yes, good catch! Updated!
Unfortunately this does not appear to be 100% reliable in chrome (i’m currently using version 62.0.3202.94, but this appears to have been an issue for a while), as sometimes contentWindow can still be null when onload is triggered.
This solution worked for me! Thanks a lot!
Thank you, saved me hours!
Sharry