2010-01-13 4 views
2

Certaines applications ColdFusion utilisent la balise cfhtmlhead pour ajouter des scripts et des balises de liens de feuille de style aléatoires ... le problème est que je ne peux pas changer les fichiers qui le font, et mon contenu doit s'exécuter avec le code qui a le Appels cfhtmlhead. Encore une fois, je ne peux pas faire grand-chose pour contourner cela.cfhtmlhead réinitialiser/annuler ou annuler?

La seule chose que je peux penser que presque œuvres est de faire une < cfcontent reset = « true »> qui prend soin de tout, mais le scénario persistant <> ... </script> et lien <. .. /> tags qui ont été ajoutés en utilisant < cfhtmlhead />

J'ai juste besoin de savoir s'il existe un moyen de réinitialiser ou d'annuler tout ce qui a été ajouté via cfhtmlhead pour sortir du texte qui ne peut pas avoir de script et étiquettes de lien ou toute autre chose jonche la sortie. D'après ce que j'ai essayé/trouvé, cela ne semble pas possible. Quelqu'un peut-il confirmer si c'est le cas? Suis-je manquant quelque solution simple ou même hackish quelque part?

Répondre

2

Merci à le lien de Henry et quelques autres problèmes que je Figuring en même temps, je suis arrivé à penser à d'autres façons de pirater à et trouvé cette solution simple qui fonctionne pour mon original problème que je ne veux pas/d'utiliser le contenu injecté par l'appel cfhtmlhead du tout:

<!--- output that doesn't work with the headerText being added to it ---> 
<cfsavecontent variable="dontLitter"> 
... 
</cfsavecontent> 

<cfcontent type="text/html" variable="#toBinary(toBase64(dontLitter))#" /> 

Cela fonctionne parce que lorsque vous utilisez la balise <cfcontent> avec l'attribut variable toutes les sorties précédent est mis au rebut, y compris tout se t avec le <cfhtmlhead> - ce qui était nécessaire.

2
while (getMetaData(out).getName() is 'coldfusion.runtime.NeoBodyContent') 
{ 
    out = out.getEnclosingWriter(); 
} 
methods = out.getClass().getDeclaredMethod("initHeaderBuffer",arrayNew(1)); 
methods.setAccessible(true); 
methods.invoke(out,arrayNew(1)); 

http://www.coldfusiondeveloper.nl/post.cfm/clearing-the-cfhtmlhead-buffer-in-railo

+0

Bonne trouvaille, Henry! :-) –

+0

:) Je viens de demander à Google ... – Henry

+0

Hmm, j'obtiens une erreur quand j'essaie ça sur ma page cfml ... Message: Impossible d'invoquer la méthode getDeclaredMethod sur la classe d'objets coldfusion.runtime.NeoBodyContent Probablement quelque chose avec la façon dont le serveur est configuré ou comment les pages sont en cours d'exécution (mon fichier auquel j'ai accès est l'un des nombreux dans une chaîne d'inclusion plutôt longue). Bonnes idées sur la page si, je vais continuer à chercher. – John