11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Comme vous l'avez certainement tous expérimenté, Firefox (et peut-être d'autres aussi) a la manie de balancer une alerte dès lors qu'un script s'exécute depuis plus de... un certain temps! Smiley lol
Bon... l'utilisateur peut certes lui demander de continuer mais... la même alerte resurviendra un certain temps plus tard. Smiley biggol

Je me suis laissé dire que l'existence de ce timeout était lié au fait que c'est un seul et même thread qui assure la gestion de l'interface graphique et l'exécution d'un script. Ce qui signifie alors évidemment que l'interface est inactive tant qu'un script s'exécute.

Soit! Mais... il n'empêche!

OK!, je sais comment l'utilisateur, en passant par le très austère et rebutant about:config peut se débrouiller pour augmenter la valeur de ce timeout.
Maintenant... mon utilisateur Smiley eek n'ira jamais se risquer là! Smiley langue
Et je le comprends.

D'où ma question :

1/ L'idéal. Il s'agit d'un événement comme un autre pour lequel on peut preventDefaulter
Lequel ?
2/ Un script peut aller bricoler la valeur de ce timeout dans la conf. Comment ?
3/ Une astuce de programmation (genre événement timeout interne au script) permet de contourner le problème en hachant l'exécution du script
Modifié par aCOSwt (09 Jun 2016 - 08:29)
Merci ManuB28, c'est ce que je craignais.
En quelque sorte, il faut refaire un scheduler... ! Smiley biggrin

Bon... TammmPI!
Modifié par aCOSwt (09 Jun 2016 - 12:21)
Est-ce que tu as regardé du côté des web workers et des service workers ? C'est très intéressant.


Et effectivement, les scripts s'exécutent traditionellement dans le thread principal, d'où cette alerte indispensable sans quoi il serait facile de complètement freeze le navigateur.

Que fais-tu comme travail pour avoir besoin d'autant de temps ?
QuentinC a écrit :
Est-ce que tu as regardé du côté des web workers et des service workers ? C'est très intéressant.

Salut QuentinC et merci pour le rappel.
Oui! Tu as raison les web workers sont bougrement intéressants et pourraient représenter une alternative avantageuse dans mon cas.
Mais la plus grande partie de mes visiteurs ont des navigateurs qui ne les supportent pas!.
QuentinC a écrit :
Que fais-tu comme travail pour avoir besoin d'autant de temps ?

Trois fois rien en plus... juste... que ce trois fois rien peut être répété jusqu'à factorielle(39) fois... Smiley eek
Et comme Raymond Devos le disait... trois fois rien... c'est déjà quelque chose... alors... factorielle(39) fois rien... je te dis pas!
Modifié par aCOSwt (09 Jun 2016 - 16:31)
a écrit :
Oui! Tu as raison les web workers sont bougrement intéressants et pourraient représenter une alternative avantageuse dans mon cas.
Mais la plus grande partie de mes visiteurs ont des navigateurs qui ne les supportent pas!.


D'après caniuse, ça donne ça :

IE: 10
Edge: 12
Firefox: 3.5
Chrome: 4
Safari: 4
iOS Safari: 5.0-5.1
Android Browser: 2.1

Ca fait quand même 87% du monde d'après ce qu'ils disent. C'est tout de même pas mal !
Théoriquement plus personne n'est censé avoir IE8, et IE9 disparaît gentiment. J'ai du mal à croire que ça représente encore 13%...

A moins que la majorité de tes visiteurs aient des bouses pour machines ?


a écrit :
Trois fois rien en plus... juste... que ce trois fois rien peut être répété jusqu'à factorielle(39) fois...


Mais encore ?

J'ai une sainte horreur des sites qui font ramer le PC dès que la page est chargée et je ne suis sûrement de loin pas le seul. J'espère donc que c'est vraiment pour une bonne raison !