这个问题在一年多前被提出并得到了答复。从那以后,ColdFusion 10发布了,但文档很差。这个问题严格关于ColdFusion 10和CFSCRIPT。
我有兴趣在CFSCRIPT中编写此代码,绝对没有使用CFHTMLHEAD标记。
<cffunction name="HTMLHead" output="false" returnType="void">
<cfargument name="text" type="string" required="yes">
<cfhtmlhead text="#text#">
</cffunction>
以下是我认为应该工作
的方式// CREATE PAGE TITLE
function createPageTitle(Content) {
LOCAL.Content = ARGUMENTS.Content;
LOCAL.Content = "<title>#LOCAL.Content#</title>";
LOCAL.Content = htmlhead(LOCAL.Content);
}
我找不到任何关于如何完成此操作的文档,但它似乎是CFSCRIPT中首先包含的内容之一。
答案 0 :(得分:6)
我认为没有。你看过GitHub上的CFScript Community Components项目吗?那里有cfhtmlhead的实现。
答案 1 :(得分:5)
CFScript社区项目的内容将工作,但看看他们如何实施<cfhtmlhead>
我有点畏缩。
但是我会按照他们正在做的事情的精神去编写一个UDF,但我只是尽可能地模仿<cfhtmlhead>
的实现方式:
<cffunction name="cfHtmlHead">
<cfhtmlhead attributecollection="arguments">
</cffunction>
(我还会使用returntype / access / output / a <cfargument>
标签等来实现它。)
我为我的编码维护了一个CFML.cfc,它填补了我运行的旧版本ColdFusion的空白,它没有那么多的CFScript就绪,但它只是一个函数库,充满了类似的UDF。我没有实现需要实例化的单个CFC,并且调用标记的函数等效方式与调用标记的方式无关。这让IMO感到困惑和设计不佳。
里程显然有所不同。
答案 2 :(得分:4)
如果不想回到使用包含基于标记的功能的UDF,那么可以在请求结束时插入需要进入<head>
块的内容,查看输出缓冲区,查找结束</head>
标记,然后将[stuff]插入到缓冲区之前。
我认为输出缓冲区存在于getPageContext().getOut()
中。有一些方法可以用它来实现它。幸运的是,Elliott Sprehn已经完成了这方面的工作,并且Ben Nadel的博客评论了如何做到这一点:http://www.bennadel.com/blog/758-ColdFusion-GetPageContext-Massive-Exploration.htm(向下滚动到Elliott's third comment)。
那就是说......我推荐这是为了“概念验证”,我仍然会使用基于标签的UDF包装方法。