Je pense que pour interpréter correctement à votre question sous cette forme: "OK, j'ai déjà fait avec de l'Ajax choses; je souhaite juste savoir si la fonction JavaScript de mon Ajax rappel inséré dans le DIV est dénonçable à tout moment à partir de ce moment, qui est, je ne veux pas l'appeler contextuellement à la fonction de rappel de retour".
OK, si tu veux dire quelque chose comme cela, la réponse est oui, vous pouvez appeler votre nouveau code en ce moment, à n'importe quel moment pendant la page de la persistance dans le navigateur, dans les conditions suivantes:
1) Votre code JavaScript retourné par Ajax fonction de rappel doit être syntaxiquement CORRECTE;
2) Même si votre déclaration de fonction est insérée dans un <script>
bloc à l'intérieur d'un <div>
élément, le navigateur ne sais pas la nouvelle fonction existe, comme le code de déclaration n'a jamais été exécuté. Donc, vous devez d' eval()
votre déclaration code renvoyé par l'Ajax de rappel, afin de bien déclarer votre nouvelle fonction et qu'il soit disponible pendant toute la page, de la durée de vie.
Même si tout à fait factice, ce code explique l'idée:
<html>
<body>
<div id="div1">
</div>
<div id="div2">
<input type="button" value="Go!" onclick="go()" />
</div>
<script type="text/javascript">
var newsc = '<script id="sc1" type="text/javascript">function go() { alert("GO!") }<\/script>';
var e = document.getElementById('div1');
e.innerHTML = newsc;
eval(document.getElementById('sc1').innerHTML);
</script>
</body>
</html>
Je n'ai pas utiliser Ajax, mais le concept est le même (même si l'exemple que j'ai choisi n'est pas très intelligent :-)
En règle générale, je ne remets pas en cause votre conception de la solution, c'est à dire s'il est plus ou moins approprié à extérioriser + généraliser la fonction dans un autre .fichier js et autres, mais veuillez prendre note qu'une telle solution pourrait soulever plus de problèmes, surtout si votre Ajax invocations de répétition, c'est à dire si le cadre de la même fonction, doit changer ou, dans le cas de la fonction déclarée persistance doit être concerné, donc peut-être que vous devriez sérieusement envisager de changer votre conception de l'un de ces exemples dans ce fil.
Enfin, si j'ai mal compris votre question, et vous parlez contextuelle invocation de la fonction lors de votre Ajax callback retourne, puis mon sentiment est de proposer le Prototype de l'approche décrite par krosenvold, comme il est cross-browser, testé et entièrement fonctionnel, et cela peut vous donner une meilleure feuille de route pour les futures implémentations.