2010-06-04 3 views
4

JSF 페이지에서 JavaScript 함수를 임베드하고 호출하는 방법을 찾고있었습니다. RichFaces도 사용하고 있습니다. RichFaces/JSF 페이지에서 JavaScript 스크립트를 임베드하고 호출하는 방법

은 내가 크로스 브라우저에서 지원하는 방식으로이 작업을 수행 할 수 표시, 기능을 정의하려면

 <a4j:outputPanel ajaxRendered="true"> 
     <f:verbatim> 
      <script type="text/javascript"> 
       function datum() { 
        alert("hi"); 
       } 
      </script> 
     </f:verbatim> 
    </a4j:outputPanel> 

을하지만 난이 함수를 호출 할 수있는 방법을 모르겠어요 페이지가로드 될 때 그렇게 텍스트를 반환은 h:outputPanel에 삽입됩니다. 계획은 클라이언트에 제공되는 페이지에 js 클럭을 포함시키는 것입니다. 참고 body 태그를 사용하지 않고 facelet ui:composition, f:view (코어) 및 RF RI rich:page을 사용하고 있습니다. 에 관계없이

감사

답변

9

페이지가 모두 사라하고 HTML 단지의 브라우저에 도달하는 시간에 의해 당신이 사용하고있는 서버 측 태그의 종류. (적어도 어쨌든 작동하지 않는 것이 좋을 것입니다.) "load"이벤트 핸들러에서 코드를 호출하도록 조정해야합니다. 이이 작업을 수행하는 여러 가지 방법이 있지만 가장 간단한이 될 것이다 :

<f:verbatim> 
    <script type="text/javascript"> 
     window.onload = function() { 
      alert("hi"); 
     } 
    </script> 
</f:verbatim> 

지금 페이지의 다른 부분을 초기화에 관해서는, 다시 한번 어떤 중요한 것은 HTML에서 끝나는 것입니다

. HTML 컨테이너 (일종의 페이지 디자인에 따라 <div> 또는 뭔가)가 있어야하며 고유 한 "id"속성이 있어야합니다. 자바 스크립트는 그 내용을 요소를 발견하고 설정하기 위해 "ID"를 사용할 수 있습니다

var elem = document.getElementById("whatever"); 
    elem.innerHTML = // ... whatever ; 

당신은 아마 "부하"함수 내에서 그 물건을 할 것입니다.

또한 XML 기반보기 technlogy 인 JSP 대신 Facelets를 사용하는 경우 JavaScript에 // <>, &과 같은 주석 또는 //가 포함 된 경우 XML CDATA 섹션 구분 기호를 추가해야합니다. &는 등 다음은 XML의 CDATA 구분 기호와 예제 :

<f:verbatim> 
    <script type="text/javascript"> 
    //<![CDATA[ 
     //Comments won't show error now. 
     window.onload = function() { 
      alert("hi"); 
     } 
    //]]> 
    </script> 
</f:verbatim> 

당신은 당신이 HTML5 페이지를 만드는 경우 당신은 그 필요하지 않습니다 when to use CDATA here.의 철저한 설명을 볼 수 있습니다.

해피 코딩!

+0

나는 서버 태그에 대해 알았지 만 jsf 코드 내에서이 함수를 호출하는 것과 관련하여 모호하지 않게하고 싶었다. 나는 window 자체를 사용할 수 있다는 것을 깨닫지 못했다. 감사합니다 – volvox

+0

오, 또한, 경고 (아마 분명) - "로드"시간 (특히 관계없는 서버 측 코드 단위 일 때)에서 호출 할 * 두 가지 * 필요하면 바로 이러한 핸들러 기능을 관리하기위한 더 나은 설정이 필요합니다. 그것이 바로 다양한 자바 스크립트 프레임 워크가 큰 도움이되기 시작한 곳입니다. – Pointy

+0

Facelets에 관해서는이 관련 답변을 참조하십시오 : [오류 구문 분석 /page.xhtml : 요소의 내용은 올바른 형식의 문자 데이터 또는 마크 업으로 구성되어야합니다.] (http://stackoverflow.com/a/4338816). 내가 편집 한 XHTML의 지나친 일반화에 관해서는이 답변을 참조하십시오 : [XHTML은 무엇입니까?] (http://stackoverflow.com/a/3194601) – BalusC

관련 문제