Ticket #390 (closed bug: fixed)
Can't attach IFrame's load event/IE7
| Reported by: | Andrey Skvortsov | Owned by: | |
|---|---|---|---|
| Priority: | major | Milestone: | 1.1.3 |
| Component: | event | Version: | 1.1a |
| Keywords: | Cc: | ||
| Blocking: | Blocked by: |
Description (last modified by joern) (diff)
Try:
var d= document.createElement( "iframe");
$(d).load( function(){alert("ok");});
d.src="";
document.body.appendChild(d);
$(d).bind(...) dosen't work too.
but standard d.attachEvent("onload",...) works fine.
Change History
comment:3 Changed 6 years ago by Dave
Just a few notes from some investigations.
The onload event actually belongs to the window object, not the document object; document.onload is an alias for window.onload.
There was this curious comment in jQuery.event.add but d.setInterval==undefined for this case and it may be unrelated anyway:
// For whatever reason, IE has trouble passing the window object // around, causing it to be cloned in the process if ( jQuery.browser.msie && element.setInterval != undefined ) element = window;
I tried a few other methods, each one by itself to prevent interference; one or both were broken on either IE7 or FF2:
var d= document.createElement( "iframe");
// Tried this and d.src = "http://www.yahoo.com" --nope
d.src="";
// Tried appending first to see if it helped --nope
document.body.appendChild(d);
// FF2: ok; IE7: Never fires
//$(d).bind("load", function(){alert("ok0");});
// IE7 & FF2: Fires before "done"
//$(d).ready(function(){alert("ok1");});
// FF2: unsupported; IE7: ok
//d.attachEvent("onload", function(){alert("ok2");});
// FF2: ok; IE7: Never fires
//d.onload = function(){alert("ok3");};
// FF2: Never fires; IE7: Fires twice, "interactive" "complete"
//d.onreadystatechange = function(){alert("ok4 "+d.readyState)};
// IE7 & FF2: Never fires
//$(d).bind("onreadystatechange", function(){alert("ok5 "+d.readyState)});
// IE7: Never fires; FF2: Permission Denied exception
//$(d).bind("click", function(){alert("ok6");});
alert("done");
That's as far as I could get.
comment:5 Changed 6 years ago by aaron.heimli
I have noticed, in FF 2.0, that attaching events to new windows that load content from a different domain (for example, http://mysite.com has a link that uses window.open() to load http://www.yahoo.com) is pretty much impossible because of the "same origin policy"(1). Perhaps this is related?
(1) http://www.mozilla.org/projects/security/components/same-origin.html
Please follow the bug reporting guidlines and use jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.
