2009-06-16 6 views
0

내 JSF 포틀릿에서 AJAX를 사용하고 있습니다. 세션이 만료되면 다음 메시지가 표시됩니다. 세션이 만료되면 AJAX 요청의 응답입니다.Firefox가 양식을 표시하지 않습니다.

이 페이지는 요청에 대한 권한을 부여받는 동안 데이터를 보관하는 데 사용됩니다.

You will be forwarded to continue the authorization process. If this does not happen automatically, please click the Continue button below. 
<CONTINUE BUTTON> 

IE 6 및 7에서 계속 버튼을 볼 수 있습니다. 하지만 Firefox에서는 그 버튼이 보이지 않습니다. 텍스트 만 볼 수 있습니다. 그러나 소스 코드에서 해당 섹션을 볼 수 있지만 Firebug에서는 회색으로 표시됩니다. http://img31.imageshack.us/img31/619/firefoxcontinue.jpg에 업로드 된 스크린 샷 AJAX는 자동으로 사용자를 로그인 페이지로 전달해야합니다. , 응답 만 표시합니다. 계속 버튼이 포틀릿 안에 표시되어야합니다. 누군가가 Mozilla Firefox에 HTML 양식이 표시되지 않는 이유를 설명해 주실 수 있습니까?

감사합니다.

테스트 페이지를 만들었습니다. 문제는 우리가 테이블 안에 폼을 삽입하려고 할 때입니다.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
    <TITLE> New Document </TITLE> 
    <META NAME="Generator" CONTENT="EditPlus"> 
    <META NAME="Author" CONTENT=""> 
    <META NAME="Keywords" CONTENT=""> 
    <META NAME="Description" CONTENT=""> 
</HEAD> 

<BODY> 
<script type="text/javascript"> 
    function insertAjax(){ 
     // alert('inside ajax'); 
     document.getElementById("wpsportlet").innerHTML='This page is used to hold your data while you are being authorized for your request.<br/><br/>You will be forwarded to continue the authorization process. If this does not happen automatically, please click the Continue button below.<form action="http://www.google.com" method="get" name="AUTOSUBMIT"><input type="submit" value="Continue"/></form>'; 

    } 

</script> 
<input type=button value="Submit" onclick="insertAjax();"> 
    <div id="wpsportlet"> 


    </div> 
</BODY> 
</HTML> 

표 안에 양식을 중첩하면 양식이 Firefox에 표시되지 않습니다. 누군가가이 문제를 해결할 수 있습니까?

답변

1

는 생성 된 DOM이 잘못되었습니다. 문자> 및 < br>, < 양식> 및 < 스크립트> 요소는 요소의 하위 요소가 아닐 수 있습니다. < tbody>, < thead> 및 < tfoot> 요소 일 수 있습니다 (XHTML에서는 < tr> 요소들도).

테이블 내에 이러한 요소가 존재하려면 테이블 셀 내에 완전히 나타나야합니다.

깨진 HTML을 감안할 때 Firefox는 작성자 오류를 보완 할 수 있지만 JS가 손상된 DOM을 생성하면 자동 수정 루틴 중 일부를 건너 뜁니다.

Doctype (HTML + Transitional + No system identifier)은 일반적으로 중요하지 않은 Quirks mode을 트리거합니다.

내가 제안 :

  1. 스위치를 표준 모드
  2. 를 트리거으로하는 doctype에 당신은 자바 스크립트를 일반 HTML을 사용하여 추가 컨텐츠를 구축하여 마크 업
  3. 의 유효성을 검사하는 대신
  4. 유효성을 검사합니다
  5. 이제 유효하다고 테스트 된 DOM을 생성 하시려면 자바 스크립트를 작성하십시오.
0

응답이 화면에 표시 될 때 JavaScript를 사용하여 버튼을 추가하지 않는 이유는 무엇입니까?
이 방법은 모든 브라우저에서 작동해야 ...

function addButton() { 
    //Create an input type dynamically. 
    var element = document.createElement('input'); 

    //Assign different attributes to the element. 
    element.setAttribute('type', 'button'); 
    element.setAttribute('value', 'Continue'); 
    element.setAttribute('name', 'somename'); 
    element.setAttribute('id', 'someid'); 

    var foo = document.getElementById("fooBar"); 

    //Append the element in page 
    foo.appendChild(element); 
} 
+0

답장을 보내 주셔서 감사합니다. 문제는 세션이 만료 될 때 위의 메시지 (외부 보안 관리자 - sitemeinder)가 표시된다는 것입니다. 그렇지 않으면 일부 검색 결과가 표시됩니다. 응답에 특정 필드가 포함되어 있는지 확인한 다음 말한대로 요소를 추가해야합니다.그러나 이로 인해 애플리케이션은 SiteMinder와 밀접하게 연결됩니다. –

+0

양식이 표 안에 표시되지 않는 이유는 tr 및 td 태그가 없기 때문입니다. 이러한 태그를 추가하면 양식이 표시됩니다. –

+0

다행이 주위를 가지고있어 - 귀하의 답변을 적어하고 귀하의 해결해야 할 수도 있습니다 다른 사람들에게 참조하십시오. – Dror

관련 문제