Side navigation
#10010 closed bug (invalid)
Opened August 10, 2011 04:07AM UTC
Closed August 10, 2011 01:55PM UTC
Double Window.load not working
Reported by: | quibski@gmail.com | Owned by: | |
---|---|---|---|
Priority: | low | Milestone: | None |
Component: | event | Version: | 1.6.2 |
Keywords: | Cc: | ||
Blocked by: | Blocking: |
Description
1. The version(s) of jQuery affected: 1.62 and earlier versions
2. The browser (or browsers) that you are able to reproduce the bug in, including version numbers: FF 5.01 and other browsers
3. The operating system (or operating systems) you experienced the bug on: OS X LION and other OS
4. ''Step-by-step instructions on how to reproduce the issue, including any required system configuration changes:''
$(window).load() is called again because of various reasons. Mine is that a form loaded once and then may be reloaded again using ajax call.
Basically it can be reproduced using 2 files - A) Form.php B) Fields.php . File A will include File B using #include ... upon browser load, the window.load found in B will execute perfectly. However, using various Ajax to replace HTML calling file B again, the HTMLS will be loaded properly however window.load does not occur anymore.
5. ''A description of what you expect to happen, and what actually happens:''
Contents of $(window).load() should be executed even if the window was formerly loaded
6. Sample simplified version using only one file to demonstrate: http://jsfiddle.net/wUyzU/
$(document).ready(function() { $("#content").append("Ready"); $(document).ready(function() { $("#content").append(" Again! "); }) }) $(window).load(function() { $("#content").append("Load"); $(window).load(function() { $("#content").append(" Twice!"); }) })
Attachments (0)
Change History (4)
Changed August 10, 2011 04:37AM UTC by comment:1
component: | unfiled → event |
---|---|
priority: | undecided → low |
resolution: | → wontfix |
status: | new → closed |
Changed August 10, 2011 04:51AM UTC by comment:2
Hi rwaldron,
I think the scenario makes sense. Although the sample given is nested. Imagine in which a user may load through ajax a html with scripts having $(window).load() and not $(document).ready();
Changed August 10, 2011 01:55PM UTC by comment:3
resolution: | wontfix |
---|---|
status: | closed → reopened |
Changed August 10, 2011 01:55PM UTC by comment:4
resolution: | → invalid |
---|---|
status: | reopened → closed |
The semantics of the .ready()
method are different from those of the load
event. Once the document becomes ready it stays ready. It's not an event, but a state. Any ready handler attached at any point afterwards will run immediately.
The load
event is different; a load
event is fired *once* by the browser. A new handler attached then, or anywhere afterwards, will not fire because the browser never fires load
again.
Although a ready
*event* does exist and you can attach to it with .bind()
, it fires once the same way the load
event does. You should use .ready()
instead.
I don't think it makes sense for jQuery to add code to handle such an edge case. Either way, it works properly when they're no nested:
http://jsfiddle.net/rwaldron/wUyzU/1/