2014-02-13 1 views
1

입력 요소가있는 양식으로 구성된 내 페이지에서 iframe을 사용합니다. 모든 입력 요소에는 입력을 확인하는 onblur() 이벤트가 있습니다.IE 8 iFrame은 첫 번째로드시 JavaScript 오류 만 발생합니다.

새로 지워진 캐시가있는 IE 8에서 페이지를 열면 다음과 같은 javascript 오류가 발생합니다.

document.getElementById(...)' is Null or not an Object 

그러나 양식을 검사하면 완전히로드되고 액세스하려고 시도합니다. 또한 전체 페이지를 새로 고침 할 때 더 이상 오류가 발생하지 않습니다. 또한 iframe의 내용을로드 할 때 오류가 발생하지 않습니다.

Firefox와 Chrome은 전혀 오류를 발생시키지 않습니다.

간단히 말해서 자바 스크립트 오류는 IE에서만 발생하며 iframe을 사용하여 양식 (필수 항목)을 표시하고 페이지가 처음로드 될 때만 발생합니다.

해결 방법에 대한 의견이 있으십니까?

나는 읽기에는 너무 혼란스럽지 않기를 바란다.

편집 :

document.getElementById("vHint_"+fieldName).innerHTML=data; 

FIELDNAME 입력 필드의 ID이다. 데이터는 유효성 검사의 반환 값입니다. 이 경우 데이터는 이미지 태그입니다. 모든 입력 필드 다음에 id가 "vHint _"+ fieldName 인 span 태그가 있습니다.

이벤트는 다음과 같이 첨부 : 모든

<input id="Jahr" class="input" type="text" onblur="validDate(this,'Jahr','_beginn')" maxlength="4" style="width:32px" value="" name="Jahr"> 
+0

그래서'onload'는'getElementById()'에 의해 루프를 수행하고'onblur'를 첨부합니다. 여기에 에러가 발생하는 곳이 있습니까? – user13500

+0

onblur는 사용자가 입력 요소에서 데이터를 입력 한 후에 시작됩니다. 그런 다음 입력의 유효성을 검사 한 다음 getElementById()를 사용하여 입력이 올바른지 표시합니다. – Drai

+0

어디서 오류가 발생하는지 getElementId()에 대한 코드를 추가 할 수 있습니까 –

답변

1

먼저 당신의 노력에 감사드립니다. 제공된 user13500 예제는 매력처럼 작동했습니다. 그리고 더 깊게 파고 들었습니다.

그리고 해결책을 찾았습니다.

모든 입력 필드는 자체 제작 된 ASP 프레임 워크로 만들어져 세션에 모두 입력됩니다. iframe 내의 입력 필드의 onblur() 이벤트는 요청 필드로 입력 필드의 이름을 전달하는 ASP 파일에 대한 AJAX 요청을 트리거합니다. 이제 ASP 파일은 세션에서 필드를 찾고 해당 값을 검색하여 입력을 확인합니다. 그 결과는 javacript 파일에 다시 게시되고 그 다음에 document.getElementById("vHint_"+fieldName).innerHTML=data;을 사용하여 결과를 페이지에 다시 게시합니다.

일반적으로 오류없이 작동합니다. 그러나 응용 프로그램이 iframe에서 실행되고 주변 페이지의 도메인과 iframe의 응용 프로그램이 다르기 때문에 IE는 iframe의 세션을 거부합니다. 따라서 세션에서 필드를 찾을 수 없으므로 ASP 유효성 검사의 결과가 비어 있습니다. 수행해야하는 일은 오직 응용 프로그램에서 코드 줄을 추가하는 것입니다 밖으로

그런 생각 갖는

Response.AddHeader "P3P", "CP=""CAO PSA OUR""" 

이 방법 IE는 더 이상 응용 프로그램의 세션을 거부하지 않습니다. 다른 사람에게도 유용 할 수 있습니다.

관련 문제