C'est ma façon de faire sur onShow, en tant que plugin jQuery. Il peut ou peut ne pas effectuer exactement ce que vous faites, cependant.
(function($){
$.fn.extend({
onShow: function(callback, unbind){
return this.each(function(){
var _this = this;
var bindopt = (unbind==undefined)?true:unbind;
if($.isFunction(callback)){
if($(_this).is(':hidden')){
var checkVis = function(){
if($(_this).is(':visible')){
callback.call(_this);
if(bindopt){
$('body').unbind('click keyup keydown', checkVis);
}
}
}
$('body').bind('click keyup keydown', checkVis);
}
else{
callback.call(_this);
}
}
});
}
});
})(jQuery);
Vous pouvez appeler cette fonction dans la $ (document) .ready() et utiliser un rappel au feu lorsque l'élément est montré, comme si.
$(document).ready(function(){
$('#myelement').onShow(function(){
alert('this element is now shown');
});
});
Il agit en se liant un clic, keyup et événement keydown au corps pour vérifier si l'élément est représenté, parce que ces événements sont plus susceptibles de causer un élément à afficher et sont très souvent effectuées par la utilisateur. Cela peut ne pas être extrêmement élégant mais fait le travail. De plus, une fois l'élément affiché, ces événements sont détachés du corps pour ne pas continuer à tirer et ralentir les performances.
Qu'en est-il de WebKit? – chakrit
Qu'est-ce qui serait standard pour cela? – vmassuchetto