jQuery equivalent of body onLoad
Is it allowed to us开发者_C百科e <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.
$(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.
This works as well:
$(window).load(function(){
// ..
myfunc();
// ..
});
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.
.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(){...})
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
Try load()
:
jQuery(document).load(myfunc)
精彩评论