J'essaie d'appeler ma classe pendant le chargement de la page, ainsi que de recharger les résultats toutes les X secondes. Toutefois, à la suite des didacticiels de setTimeout, jquery semble me jeter une erreur que je ne comprends pas, vu que c'est sans syntaxe.
Uncaught RangeError: La taille maximale de la pile d'appels a été dépassée
var Rand = function() {
return Math.random().toString(36).substr(2);
};
lhc();
function lhc(){
$('#lhcb a').each(function() {
var rawlink = $(this).attr("href");
var link = encodeURIComponent( rawlink );
var token = Rand();
var href = $(this).prop('href');
var proceed = $.getJSON( "lhc/link.php?link=" + link + "&a=c", function( data ) {
if ( data.proceed == 'true' ) {
return true;
} else {
return false;
}
}).error(function(e) { alert("error"); console.log(e);});
if ( href.match("^javascript:") ) {
proceed = false;
}
if ( rawlink.charAt(0) != '#' ) {
if ( proceed ) {
$(this).after( " <span style='font-size:xx-small;'>( Hits: <span id='" + token + "'></span> )</span>" );
$.getJSON( "lhc/link.php?link=" + link + "&a=q", function( data ) {
$('#' + token).html(data['hits']);
}).error(function(e) { alert("error"); console.log(e);});
$(this).attr( "href", "lhc/link.php?link=" + link + "&a=g" );
}
}
});
setTimeout(lhc(), 5000);
}
Changement
setTimeout(lhc(), 5000);
à
setTimeout(lhc, 5000);
Vous appelez la fonction directement sans délai lorsque vous ajoutez la parenthèse et l'appelez immédiatement dans la même fonction devient rapidement une boucle sans fin qui remplit la pile
Vous pouvez ignorer l'erreur si vous exécutez <script>window.onerror = function(){ return true;} </script>
Et définissez setTimeout(lhc, 5000);
certains.