2014-06-16 2 views
0

jsoup 및 coldfusion을 사용하여 여러 스크립트 태그를 결합하는 방법을 알아낼 수 없습니다. 여기에 application.cfc 페이지에 코드가 있습니다.Coldfusion JSoup가 헤드 태그의 요소를 대체합니다.

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

을이

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

으로 자바 객체와 도움이 될 ColdFusion에서와 올바른 방향의 모든 단계를 돌려 :

 <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> 

결과는 다음을 복용해야한다.

답변

2

jsoup를 사용하지만이 방법을 사용하지 않는 것이 좋습니다. 필요한 다른 JS 매개 변수가있을 수 있으며 모든 스크립트를 단일 블록에 추가하면 문제가 발생할 수 있습니다 (예 : 연기).

실제적으로 모든 CSS & JSS 스크립트를 배열 객체에 추가 한 다음 CFHTMLHEAD를 사용하여 HTML 헤드 섹션에 출력합니다.

어떤 웹 서버를 사용하고 있습니까? IIS 인 경우 http://www.iispeed.com/이 Google PageSpeed ​​플러그인은 자동으로 스크립트 (& CSS)를 헤더로 지능적으로 이동시키고, 각 장치에 가장 적합한 파일 크기를 기반으로 스크립트를 연결하고, 필요한 경우 축소, 제어 캐싱 및 인라인 삽입을 수행합니다. (나는 전혀 문제 사용한 ColdFusion 9 & 10 IISpeed ​​사용했습니다.)

당신은 빠른 응답을

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

+0

감사에서 데모를 사용하여 페이지 속도와 귀하의 웹 사이트에 @ 제임스 실험 할 수있다, 이것은 정확히 제가 결합하려고하는 스크립트가 coldfusion의 ajax 기능에 의해 자동 생성된다는 점을 제외하고는 꼭 필요한 것일 것입니다. 그래서 대략 300 개의 script 태그를 줄 것입니다 :' 내가 CF의 아약스 태그를 피하고 대신 jQuery의 AJAX 기능을 사용했습니다. 내가 제어 할 수없는 닫힌 CF 함수를 사용하는 것에 대해 안심하고 JS 라이브러리와 같은 나머지 JS 라이브러리가 업데이트 될 때 업데이트되지 않습니다. (예 : CF11은 2011 년부터 jQuery 1.6.1과 함께 제공됩니다.) 제가 기억한다면 ColdFusion은 생성 된 위젯의 출력을 제어하고 HEAD 섹션에서 일부를 버립니다. 당신은 CFContent에 의해 포착 될 수 없을 수도 있으며 또한 피할 수없는 이유 중 하나입니다. –

+0

최근의 Adobe BugBase 응답에 따르면 Ajax UI 구성 요소는 CF12에서 사용되지 않을 수 있습니다. https://bugbase.adobe.com/index.cfm?event=bug&id=3043516 아약스 요청을 수행하는 다른 방법이 있습니다. CF의 ajax 구성 요소를 사용하면 Ajax를 쉽게 사용할 수 있지만 기술적 인 부채가 발생하는 가장 빠른 방법이기도합니다. 장기적으로 당신에게 더 유익 할 UI 대안이 있습니다. http://static.raymondcamden.com/cfuitherightway/ –

관련 문제