2012-11-02 7 views
1

페이지가 언로드 될 때 JavaScript에서 JSF 백업 빈 기능을 실행하려고합니다. 그것은 IE와 크롬에서 잘 작동하지만 Firefox에서는 그렇지 않습니다.JSF backing bean 함수가 Firefox의 JavaScript에서 호출되지 않지만 IE 및 Chrome에서 정상적으로 작동하는 이유는 무엇입니까?

<h:body onunload="onPageUnload()"> 
    <h:form id="theForm"> 
    <p id="hiddenButton" style="display:none"> 
     <h:commandLink id="hiddenCloseEvent" styleClass="button" action="#{theBean.doHiddenCloseEvent}"> 
     <f:param name="action" value="CLOSE"/> 
     </h:commandLink> 
    </p> 
    ... 
    </form> 
</h:body> 

언로드 이벤트가 수신 될 때, 따라 자바 스크립트가 실행됩니다

onunload 이벤트가 XHTML에서 트리거를 얻는 방법이다. 하나는 IE 용이고 다른 하나는 Google 크롬 용입니다.

IE 버전 :

function onPageUnload() { 
    if(detailPage == "false") { 
    document.getElementById('theForm:hiddenCloseEvent').click(); 
    } 
} 

Google 크롬 버전 다음 onPageUnload()이 실행되면

window.onbeforeunload = function(e) { 
    onPageUnload(); 
}; 

, 그것은 숨겨진 입력 버튼 JSF 구성 요소의 클릭 이벤트를 트리거하고 JSF 뒷면 콩 화재, theBean, 일부 처리를 수행하는 기능이 theBean.doHiddenCloseEvent입니다. 이제는 JSF 함수가 IE 및 Chrome 버전에서 실행되지만 Firefox에서 트리거되지 않는 상황에서이 문제가 어떻게 해결 될 수 있는지 알 수 있습니까?

내가 코드를 아래와 같이 수정 한

업데이트 : 나는 before 프롬프트 갔지만 after이 메시지를 표시하지 않는 것을 발견 위의 코드에서

function onPageUnload() { 
    if(detailPage == "false") { 
    alert('before'); 
    document.getElementById('theForm:hiddenCloseEvent').click(); 
    alert('after'); 
    } 
} 

. 이 테스트 케이스는 구성 요소가 웹 브라우저에 표시되지 않는지 여부를 확인합니다.

+0

Firefox의 오류 콘솔에 Java 스크립트 오류 (있는 경우)를 게시 하시겠습니까? –

+0

'alert()'로 테스트했기 때문에 JavaScript 사이트에 오류가 없습니다. 경고 메시지가 표시되지만 클릭 이벤트 만 작동하지 않습니다. – huahsin68

답변

0

저는 이것이 firefox의 특별한 문제라고 생각합니다. FF를 수용하려면 onbeforeunload을 사용하는 것이 좋습니다.

Firefox forumhere을 참조하십시오. onbeforeunload은 모든 브라우저에서 지원되지는 않지만

두 가지 이벤트를 모두 사용하여 두 가지 기본을 모두 사용할 수 있습니다.

+0

나는'body onunload = "xx"와 onbeforeunload = "yy">'같은 시간에 두 개의 언로드 속성을 가질 수 있을지 궁금하다. – huahsin68

+0

네, 이론 상으로는 두 개의 별개의 이벤트가 있습니다. http://stackoverflow.com/a/3775590/1530938을 참조하십시오. – kolossus

+0

2 명이 함께 앉을 수 있지만 onbeforeunload가 작동하지 않는 것 같습니다. 지금 현재의 이슈는'alert ('before')'프롬프트이고'alert ('after ')'프롬프트가 아니라고 생각합니다. 이것은 언로드 이벤트가 트리거되었음을 나타내며 근본 원인이 'document.getElementById ('theForm : hiddenCloseEvent ')입니다. click();'클릭 이벤트가 트리거 할 수없는 구성 요소 일 수 있습니다. . – huahsin68