Coldfusion JSoup替换head标签中的元素

时间:2014-06-16 23:53:38

标签: coldfusion jsoup element cfml

我无法弄清楚如何使用jsoup和coldfusion将多个脚本标记合并为1,这里的代码放在application.cfc页面中。

        <cfsavecontent variable="htmlContents">
            <cfoutput>
                <cfinclude template="#arguments.TargetPage#">
            </cfoutput>
        </cfsavecontent>
        <cfscript>
        jsoup = createObject("java", "org.jsoup.Jsoup");
        html = jsoup.parse(htmlContents);
        head = html.head();
        children = head.children();
        cssdata = "";
        scriptdata = "";

        if(ArrayLen(children)) {
            for (i=1; i<ArrayLen(children); i++) {
                if (children[i].tagName() EQ "style") {
                    returnHTML = children[i].html();
                    if (returnHTML NEQ "") {
                        cssdata = cssdata & returnHTML;
                        children[i].remove();
                    }
                } else if (children[i].tagName() EQ "script") {
                    returnHTML = children[i].html();
                    if (returnHTML NEQ "") {
                        scriptdata = scriptdata & returnHTML;
                        children[i].remove();
                    }
                }
            }
        }
        WriteOutput(html);
        </cfscript>

结果应该是这样的:

<script>
//script
</script>
<script>
//script
</script>
<script>
//script
</script>
<script>
//script
</script>

并将其转化为此

<script>
//script//script//script//script
</script>

使用java对象和coldfusion在正确方向上的任何步骤都会有所帮助。

1 个答案:

答案 0 :(得分:2)

我使用jsoup,但我不建议这样使用它。您可能需要其他JS参数,并将所有脚本添加到单个块中可能会导致问题(即延迟)。

作为一种练习,我们添加了所有CSS&amp; JSS脚本到数组对象,然后使用CFHTMLHEAD将它们输出到HTML头部分。

<cfset AddToHeader = arraynew(1)>
<cfsavecontent variable="tempJS">
<script type="text/javascript">
$(function(){
    console.log('hello world');
});
</script>
</cfsavecontent>
<cfset arrayappend(AddtoHeader, tempJS)>
...
<cfhtmlhead text="#arraytolist(AddtoHeader, chr(10))#">

您使用的是哪个网络服务器?如果是IIS,请查看http://www.iispeed.com/此Google PageSpeed插件会自动将脚本(&amp; CSS)智能地移动到标题,根据每个设备的最佳文件大小连接脚本,缩小,控制缓存并在需要时嵌入内联。 (我已经使用了IISpeed和ColdFusion 9&amp; 10,绝对没有问题。)

您可以使用

中的演示来试验PageSpeed和您的网站

http://www.iispeed.com/pagespeed-demo