javascript eval global : part 2

Posté le Mardi 27 f√©vrier 2007 à 13 h 04, Read it in english with Google

Apr√®s une premi√®re approche non sans faille de l’√©valuation d’un code javascript dans un contexte global , voici la seconde version, compatible FireFox et IE et tout les navigateurs d√©riv√©s.

var globaleval = function (code){
  if(window.execScript) window.execScript(code);
  else window.eval(code);
}

Et oui il fallait savoir que le navigateur de l’homme le plus riche du monde impl√©mente une m√©thode : window.execScript inconnu des standards.

Cette m√©thode n’est pas compatible avec Safari. Je travaille encore dessus mais il semble que KHTML (le moteur de base de Safari et de Konqueror) soit allergique √† une d√©claration propre…

La m√©thode utilis√© par les framework tel que prototype semble √™tre celle qui donne le meilleur r√©sultat. Il s’agit de la m√©thode setTimeout(code,0) seulement les variables √©valu√©es ne sont disponibles que dans un prochain appel non inline (provoquer par un √©v√™nement ou bien un autre appel avec setTimeout).

J’ai d√©j√† passer beaucoup de temps dessus sans succ√®s… De plus pour tester les r√©sultat j’utlise Swift qui impl√©mente le m√™me moteur que Safari (WebKit) et on ne peut pas dire que ce soit une lumi√®re… normal c’est un safari :)

Il y aura donc surement une troisième partie, entièrement compatible cette fois.

mise à jour : Et la voilà, code final pour un eval javascript propre

Les commentaires sont fermés.