Reputation: 6107
Is it allowed to use <body onLoad="myfunc()">
along with jQuery's document.ready()
handlers?
I can't find a way to achieve the same functionality of the <body onLoad>
with jQuery.
An example of a use case would be a facebook application. An Iframe facebook app requires the use of the FB.Canvas.setSize
function which resize the iframe.
I would need to fire it up only when all elements on the page are finished loading.
Upvotes: 27
Views: 78295
Reputation: 1379
.load(),
.unload()
or .error()
are deprecated since jQuery 1.8.
Lookup for these aliases in your code and replace them with the .on() method instead
$(window).on('load', function(){...})
Upvotes: 7
Reputation: 526
Found this thread updating some old code that had <body onload="someFunc()">
so to give an updated answer:
Don't use load()
. While $(document).ready(function(){...});
should work (depending on your use case) you actually want: $(window).on('load', function(){...});
to more closely mimic <body onload="...">
Some threads suggest this has been deprecated since jQuery 1.8 (as well as .unload()
and .error()
) and should be replaced with proper .on()
implementations. I've confirmed that using load()
on 3.3.1 results in an error, namely: indexOf is not a function
in jquery.min.js
Documentation For jQuery's on
Event Handler
Upvotes: 1
Reputation: 89
This works as well:
$(window).load(function(){
// ..
myfunc();
// ..
});
Upvotes: 8
Reputation: 3841
$(window).load(myfunc)
is what you're looking for. If you're working with the load event of an iframe, you can replace window
with the iframe element/selector.
Upvotes: 38
Reputation: 4221
From the jQuery API on the ready handler:
The .ready() method is generally incompatible with the <body onload=""> attribute. If load must be used, either do not use .ready() or use jQuery's .load() method to attach load event handlers to the window or to more specific items, like images.
Upvotes: 5