2010-12-14 7 views
1

Je travaille avec un logiciel hérité qui génère du HTML et j'ai besoin de faire quelques manipulations avec ce HTML. Pour ce faire, je veux cloner tout le contenu du corps à variable et travailler dessus pour ne rien changer dans la fenêtre du navigateur. Comme ceci:jQuery append()/appendTo()/html() provoque le feu javascript à l'intérieur DOM

var tmp = jQuery("body").contents(); 

Ensuite, j'essaie de faire quelques modifications avec tmp variable:

tmp.wrap("<span></span>"); 

Le problème est HTML a < le style > et < scénario > balises dans le corps < > et ressemble à JavaScript déclenche lorsque j'essaie d'ajouter tmp quelque part, ou faire l'emballage. Je voudrais savoir s'il existe un moyen de faire $ .append, $ .appendTo sans lancer javascript dedans? (À l'exception, le filtrage HTML réel et la suppression tous les scripts < > tags)

+0

Qu'essayez-vous de faire? – Matt

+0

J'ai besoin de faire quelques modifications à DOM et à la fin, trouver la hauteur résultante() et la largeur() de celui-ci. Mais même $ simple ("body"). Contents(). WrapAll ("

") déclenche l'exécution de tout JavaScript incorporé dans le corps. Je veux l'éviter. –

+0

Vous pourriez être intéressé par cette [proposition de pile-échange] (http://area51.stackexchange.com/proposals/11464/code-review?referrer=aWNm_PdciyFqjFW8CUacGw2 "revue de code"). Il est presque prêt à commencer la bêta, il en faut juste un peu plus. – greatwolf

Répondre

0

Une façon serait de mettre une fois une variable, comme trigger = true et envelopper tout ce que vous code actuel dans une instruction if:

if (trigger) { your scripts...} 

puis, avant d'envelopper/ajouter le balisage, mettre le déclencheur à false (ne pas ajouter également à trigger = true un)