2010-06-04 6 views
2

J'utilise la technique JSONP/dynamic-script-tag pour effectuer un AJAX interdomaine (Il n'y a pas de XML, mais vous savez ce que je veux dire). Au début, j'ai écrit ma propre solution, mais je ne pouvais pas trouver une manière élégante de supprimer le script après son exécution. Ma stratégie consistait simplement à passer un identifiant et à retirer le script associé, mais je me suis rendu compte que cela empêcherait la mise en cache, ce que je ne veux pas faire.Comment supprimer le tag de script ajouté par ajax interdomaine?

C'était quelque chose comme:

1) insérer Dynamiquement: <script src="http://example.com/handler.php?callback=x&scriptid=y"></script>.

2) Le script charge et exécute x(); removeScript(y);removeScript a retiré l'élément de script approprié de l'élément head.

Cela a fonctionné très bien mais a détruit la mise en cache. J'ai donc été ravi d'apprendre que jQuery fournit une méthode jsonp et l'a rapidement implémentée, pensant qu'ils avaient tout compris. Au lieu de cela, jQuery laisse l'élément script là.

Existe-t-il un moyen propre d'enlever ces éléments?

+0

Quel est le mal à le quitter, ou pourquoi voulez-vous l'enlever? – Justin

Répondre

-3

Pourquoi voudriez-vous les supprimer? Seuls les web geeks regardent le code source d'une page, et il y a de fortes chances que vous ne soyez pas payé par les web geeks pour faire un site web. Ils sont inoffensifs, vous n'avez donc pas besoin de faire tous les efforts pour retirer les tags.

+3

-1 parce que le point n'est pas vraiment sur "web geeks" - il s'agit de la mémoire requise pour charger l'arbre DOM. Finalement, le nombre de tags de script créés par Fletcher dépassera la mémoire utilisée par le navigateur pour stocker le DOM et vos scripts s'arrêteront probablement d'être exécutés (c'est le cas dans Chrome). Vous fuyez effectivement la mémoire. – ivans

+0

@ivans Combien d'éléments '

1

Grâce à votre question, j'ai découvert ce projet sur code.google: jquery-jsonp. ce plugin fournit certaines fonctionnalités que jquery n'a pas.

Je ne l'ai jamais utilisé mais semble être cool et gérer une grande variété de choses, y compris la mise en cache. Vous pouvez trouver quelques exemples de son utilisation ici: http://code.google.com/p/jquery-jsonp/wiki/TipsAndTricks

Questions connexes