ColdFusion schreibt den generierten Code in einen Buffer und gibt diesen am Schluss oder bei einem cfflush an den Client aus. Für cfhtmlhead gibt es jedoch einen separaten Buffer und dieser wird ganz am Schluss entweder in den Head Tag geschrieben oder wenn keiner vorhanden ist einfach an den Anfang des Inhalts.
Einige CF Tags wie cfmenu verwenden nun diesen Buffer um den benötigen Java Script Code in der Seite einzubinden.
Wer nun versucht mit cfconent reset="yes" den bisher generierten Code zu löschen um z.B. ein CSV oder eine vCard auszugeben findet am Anfang den JavaScript Code. So wie es aussieht wird durch das Reset Attribut nicht alles zurückgesetzt.
Im Internet habe ich Code von Elliot Sprehn gefunden welcher das Problem löst:
function getCFHtmlHeadContent() {
var out = getPageContext().getOut();
var field = out.getClass().getDeclaredField("headerBuffer");
var buffer = 0;
field.setAccessible(true);
buffer = field.get(out);
if( isDefined("buffer") ) return buffer.toString();
return "";
}